UserForm Liste dépendante d'une autre

Résolu/Fermé
Theo - 25 janv. 2019 à 10:29
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 25 janv. 2019 à 12:10
Bonjour,

J'ai un soucis avec une liste déroulante dans un formulaire :

Dans le fichier en colonne A il y a des noms d'entreprises, en colonne B des nom de documents affiliés a ces entreprises

Je cherche à faire un Formulaire avec une première liste déroulante pour le choix de l'entreprise (le code fonctionne pour celle-ci)
et en fonction de l'entreprise choisi, la seconde liste déroulante propose tous les documents affiliés a cette entreprise (C'est là que le code ne fonctionne pas)

Le fichier d'exemple :

https://cjoint.com/c/IAzjCwPGqrm

Le code :

Private Sub ComboBox1_DropButtonClick()

Dim Entreprises As Object
Dim Cel As Range

Set Entreprises = CreateObject("Scripting.Dictionary")

With Sheets(1)
    For Each Cel In .Range("A2:A" & .[A65000].End(xlUp).Row)
        If Not Entreprises.Exists(Cel.Value) And Cel.Value <> "" _
            Then Entreprises.Add Cel.Value, Cel.Value
    Next Cel
    
End With

Me.ComboBox1.List = Application.Transpose(Entreprises.items)

End Sub
Private Sub ComboBox2_DropButtonClick()

Dim Docs As Object
Dim Cel As Range

With Sheets(1)
    If ComboBox1.Value <> "" Then
    
        For Each Cel In .Range("A2:A" & .[A65000].End(xlUp).Row)
            If Cel.Value = ComboBox1.Value Then
                Docs.Add Cel.Offset(0, 1).Value, Cel.Offset(0, 1).Value
            End If
        Next Cel
        
        Me.ComboBox2.List = Application.Transpose(Docs.items)
        
    Else
    
        MsgBox "Veuillez sélectionner une entreprise", , "Erreur 01"
        
    End If
End With
End Sub



Merci d'avance de vos réponses

2 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 janv. 2019 à 11:54
Bonjour,

Vous tenez absolument a votre code qui remplit les infos combobox en dynamique des que click sur la fleche. Ainsi que vos dico
0
J'ai réussi a trouver mon erreur :

J'avais oublié une ligne de codage.

Voici mon code pour la combobox 2 si quelqu'un rencontre le même problème :

Private Sub ComboBox2_DropButtonClick()

Dim Docs As Object
Dim NumLig As Double
Dim i As Double

Set Docs = CreateObject("Scripting.Dictionary")

With Sheets(1)

NumLig = [A65000].End(xlUp).Row

    If ComboBox1.Value <> "" Then
    
        For i = 11 To NumLig
            If Cells(i, 1).Value = ComboBox1.Value Then
                Docs.Add Cells(i, 2).Value, Cells(i, 2).Value
            End If
        Next i
        
        Me.ComboBox2.List = Application.Transpose(Docs.items)
        
    Else
    
        MsgBox "Veuillez sélectionner une entreprise", , "Erreur 01"
        
    End If
End With
End Sub
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 janv. 2019 à 12:10
Re,

Oui, mais y a plus simple sans dico, sans rafraichissement en dynamique des combobox et plus rapide si beaucoup de lignes colonne A

Mais c'est vous qui voyez
0