Liste déroulante vide après choix multiple

Bonjour à tous,

Travaillant sue Excel 365 version 2202 je cherche à créer une liste déroulante qui puiserai les données dans deux feuilles différentes selon la question précédente.

Je m'explique : La première liste déroulante appelée End use contient 2 item : AAA ou BBB

Si la réponse AAA est sélectionnée, la seconde liste déroulante proposera des options de la feuille Data_AAA

Si la réponse BBB est sélectionnée, la seconde liste déroulante proposera des options de la feuille Data_BBB

Seulement la seconde liste devient vide dès lors que j'essaie d'utiliser une fonction If...

Voici le bout de code en question:

'Choix multiple avec end use
    Repuse.AddItem "AAA"
    Repuse.AddItem "BBB"

' remplissage des combobox avec tri alphabétique
If Repuse = "AAA" Then
    Set f = Sheets("Data_AAA") 'Liste AAA
    Set dico = CreateObject("Scripting.Dictionary")
    Set plage = f.Range("B8:B" & f.Range("B" & Rows.Count).End(xlUp).Row)
    Call sprog
    Me.Repsupplier.List = temp
    Me.Repsupplier.AddItem o, 0 'rajoute other dans la liste en première position
    Set plage = f.Range("A8:A" & f.Range("A" & Rows.Count).End(xlUp).Row)
    Call sprog ' fonction pour remplissage des combobox avec tri alphabétique
    Me.Repgrade.List = temp
    Me.Repgrade.AddItem o, 0

ElseIf Repuse = "BBB" Then
    Set f = Sheets("Data_BBB") 'Liste BBB
    Set dico = CreateObject("Scripting.Dictionary")
    Set plage = f.Range("B8:B" & f.Range("B" & Rows.Count).End(xlUp).Row)
    Call sprog
    Me.Repsupplier.List = temp
    Me.Repsupplier.AddItem o, 0 'rajoute "other dans la liste en première position
    Set plage = f.Range("A8:A" & f.Range("A" & Rows.Count).End(xlUp).Row)
    Call sprog ' fonction pour remplissage des combobox avec tri alphabétique
    Me.Repgrade.List = temp
    Me.Repgrade.AddItem o, 0
End If
End Sub

Si j'enlève la fonction If, le code ramenant à la seconde liste déroulante marche très bien...

Merci par avance pour vos lumières.

Az

Bonjour et bienvenue,
Joins un fichier pour une aide adaptée du forum.
Cdlt.

Bonjour,

Merci pour votre réponse mais le fichier est confidentiel et donc ne peut pas être partagé.

Cependant je viens de trouver une solution à mon problème.

J'ai remplacé la première liste déroulante par des boutons cliquables.

Ces derniers étant dans des subs séparés, ils ne se gênent pas.

Nouveau code si certains peuvent en profiter :

 Private Sub AAA_Click()
    'Permet de vérifier que les cases réponses ne soient pas vides
    If Len(Me.Repname.Value & "") = 0 Or Len(Me.Repmail.Value & "") = 0 Then 'si une des réponse est vide
        MsgBox "Please complete all information before validate"
    End If
        Supplier.Visible = True
        Repsupplier.Visible = True
        Grade.Visible = True
        Repgrade.Visible = True
    Set f = Worksheets("Data_AAA")
    repuse = "AAA"
    Set dico = CreateObject("Scripting.Dictionary")
    Set plage = f.Range("B8:B" & f.Range("B" & Rows.Count).End(xlUp).Row)
    Call sprog
    Welcome.Repsupplier.List = temp
    Welcome.Repsupplier.AddItem o, 0 'rajoute "other dans la liste en première position
    Set plage = f.Range("A8:A" & f.Range("A" & Rows.Count).End(xlUp).Row)
    Call sprog ' fonction pour remplissage des combobox avec tri alphabétique
    Me.Repgrade.List = temp
    Me.Repgrade.AddItem o, 0
End Sub

 Private Sub BBB_Click()
    'Permet de vérifier que les cases réponses ne soient pas vides
    If Len(Me.Repname.Value & "") = 0 Or Len(Me.Repmail.Value & "") = 0 Then 'si une des réponse est vide
        MsgBox "Please complete all information before validate"
    End If
        Supplier.Visible = True
        Repsupplier.Visible = True
        Grade.Visible = True
        Repgrade.Visible = True
    Set f = Worksheets("Data_BBB")
    repuse = "BBB"
    Set dico = CreateObject("Scripting.Dictionary")
    Set plage = f.Range("B8:B" & f.Range("B" & Rows.Count).End(xlUp).Row)
    Call sprog
    Welcome.Repsupplier.List = temp 
    Welcome.Repsupplier.AddItem o, 0 'rajoute "other dans la liste en première position
    Set plage = f.Range("A8:A" & f.Range("A" & Rows.Count).End(xlUp).Row)
    Call sprog ' fonction pour remplissage des combobox avec tri alphabétique
    Me.Repgrade.List = temp
    Me.Repgrade.AddItem o, 0
End Sub

' fonction pour remplissage des combobox avec tri alphabétique
Sub sprog()
        dico.RemoveAll
        For Each c In plage
            dico(c.Value) = c.Value
        Next c
        temp = dico.keys
        Call Tri(temp, LBound(temp), UBound(temp))
End Sub

' fonction pour remplissage des combobox avec tri alphabétique
 Sub Tri(a, gauc, droi) ' Quick sort
   ref = a((gauc + droi) \ 2)
   g = gauc: d = droi
   Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
       tempo = a(g): a(g) = a(d): a(d) = tempo
       g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)
 End Sub

Bonne journée !

Rechercher des sujets similaires à "liste deroulante vide choix multiple"