UserForm Liste dépendante d'une autre

Résolu
Theo -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. Theo
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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