IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment créer une dépendance entre deux listes avec des données issus d'un tableau?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Points : 11
    Points
    11
    Par défaut Comment créer une dépendance entre deux listes avec des données issus d'un tableau?
    Voilà, j'ai trouvé le tuto expliquant comment créer une dépendance entre deux listes : http://excel.developpez.com/faq/?pag...anceListeValid

    Cependant, ma demande est un brin + complexe et je comptais sur la compétence de chacun pour mener à bien mon projet.

    L'idée serait :
    - je possède un tableau avec beaucoup d'informations.
    Dans la colonne A, il y aurait des noms de sociétés (qui peuvent se répéter)
    dans la colonne N, il y aurait un contact par ligne

    Par ex :
    Société Contacts
    A 1
    B 2
    C 3
    D 4
    B 5
    A 6
    D 7
    D 8
    A 9

    Dans un nouvel onglet, j'élabore un autre tableau et l'idée serait de remplir les 2 1ere colonnes avec des listes du tableau précédent.
    en A, choisir parmi les sociétés (A,B,C,D) facilement réalisable et en B, choisir parmi les contacts selon la valeur dans la colonne A.
    si A est choisi, choisir parmi 1, 6, 9
    si B, parmi 2, 5
    si C, parmi 3
    si D, parmi 4, 7, 8

    Merci d'avance, tout tuto ou indication sont les bienvenus
    efesdark

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Pour ceux que cela intéresserait j'ai développé cela par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub Worksheet_Change(ByVal Target As Range)
     
     
    Dim Lst As String
    Dim c As Range
     
    If Target.Count = 1 And Target.Column = 1 And Target.Row > 1 Then
        If Target.Value <> "" Then
            Application.ScreenUpdating = False
            Target.Offset(0, 1).Validation.Delete
            With Sheets("Contacts")
                .AutoFilterMode = False
                .Range("Company").AutoFilter Field:=1, Criteria1:=Target.Value
                For Each c In .Range("Contact").SpecialCells(xlCellTypeVisible)
                    If c.Row > 1 Then Lst = Lst & "," & c.Value
                Next c
                .AutoFilterMode = False
            End With
            Lst = Mid(Lst, 2)
            If Lst <> "" Then Target.Offset(0, 1).Validation.Add Type:=xlValidateList, Formula1:=Lst
        Else
            Application.EnableEvents = False
            Target.Offset(0, 1).ClearContents
            Application.EnableEvents = True
        End If
    End If
    End Sub
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Kol As New Collection
    Dim Lst As String
    Dim i As Integer
    Dim c As Range
     
    If Target.Count = 1 And Target.Column = 1 And Target.Row > 1 Then
        Target.Validation.Delete
        With Sheets("Contacts")
            For Each c In .Range("Company")
                On Error Resume Next
                Kol.Add c.Value, c.Value
                On Error GoTo 0
            Next c
        End With
        For i = 1 To Kol.Count
            Lst = Lst & "," & Kol(i)
        Next i
        Lst = Mid(Lst, 2)
        If Lst <> "" Then Target.Validation.Add Type:=xlValidateList, Formula1:=Lst
    End If
    End Sub
    Cependant, je me suis aperçu que celle-ci posait un message d'erreur conernant les Listes de validation créées, une fois que mon fichier est sauvegardé et fermé et que je le ré-ouvre.

    2 listes dites simples Company et Contact reprenant la liste de sociétés et celles des contacts de ceux-ci. Et réparer mon fichier etc... qui est en .XLSM

    En essayant en .XLS, cela fonctionne parfaitement avec cette macro. Comme mon fichier est complexe avec bcp de nouvelles mises en forme, structuration d'excel 2007, je souhaiterais rester en .XLSM
    Qqn aurait-il une idée ce que je dois modifier dans mon code ou option ? Merci bien !!!

    Efesdark

Discussions similaires

  1. [XL-2007] Créer une dépendance entre trois listes
    Par meumeu73.1 dans le forum Excel
    Réponses: 1
    Dernier message: 07/12/2011, 12h09
  2. Réponses: 1
    Dernier message: 11/06/2009, 23h39
  3. Comment créer une contrainte entre deux tables ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/04/2009, 16h53
  4. Réponses: 1
    Dernier message: 18/02/2007, 11h07
  5. Formulaire: Créer une dépendance entre deux champs.
    Par mystikfury dans le forum Access
    Réponses: 3
    Dernier message: 17/05/2006, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo