Modifications, Affichage ou non de Liste Déroulante ActiveX dans un UserForm
Bonjour,
En m'appuyant sur les Tuto d'Heureuxoli (merci à lui), j'ai édité quelques lignes VBA me permettant dans un UserForm d'Afficher ou Masquer des Listes Déroulantes ActiveX suivant les choix faits par l'utilisateur.
J'y suis parvenu avec le code suivant :
Code:
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| Private Sub UserForm_Initialize()
'Création de la liste des valeurs de la ComboBox1
ComboBox1.List = Array("Valeur1", _
"Valeur2", _
"Valeur3", _
"Valeur4", _
"Valeur5")
End Sub
Sub ComboBox1_Change()
Dim 1 As String, 2 As String, 3 As String
'Récupération de la valeur des ComboBox1, ComboBox2 et ComboBox3
1 = ComboBox1.Value
2 = ComboBox2.Value
3 = ComboBox3.Value
'Nettoyage des listes ComboBox2 et ComboBox3
ComboBox2.Clear
ComboBox3.Clear
'Ajout des valeurs ComboBox2 en fonction de la ComboBox1
Select Case 1
Case "Valeur1": _
'Listes ComboBox2 et ComboBox3 Masquées
ComboBox2.Visible = False
ComboBox3.Visible = False
Case "Valeur2" _
'Listes ComboBox2 et ComboBox3 Masquées
ComboBox2.Visible = False
ComboBox3.Visible = False
Case "Valeur3" _
'Affichage de la liste du ComboBox2
ComboBox2.Visible = True
'Modification de la liste du ComboBox2
ComboBox2.List = Array("ValeurA", _
"ValeurB", _
"ValeurC", _
"ValeurD")
'Ajout du ComboBox3 en fonction du ComboBox2
Select Case 2
Case "ValeurA": _
'Liste ComboBox3 Masquée
ComboBox3.Visible = False
Case "ValeurB": _
'Liste ComboBox3 Masquée
ComboBox3.Visible = False
Case "ValeurC": _
'Affichage de la liste du ComboBox3
ComboBox3.Visible = True
'Modification de la liste du ComboBox3
ComboBox3.List = Array("ValeurC1", _
" ValeurC2", _
" ValeurC3")
End Select
Case "ValeurD": _
'Liste ComboBox3 Masquée
ComboBox3.Visible = False
Case "Valeur4" _
'Listes ComboBox2 et ComboBox3 Masquées
ComboBox2.Visible = False
ComboBox3.Visible = False
Case "Valeur5" _
'Listes ComboBox2 et ComboBox3 Masquées
ComboBox2.Visible = False
ComboBox3.Visible = False
End Select
End Sub |
Cela fonctionne correctement de la liste ComboBox1 à la ComboBox2, mais je n'y arrive de la ComboBox2 à la 3.
Ce que je voudrais faire :
Si le choix de la ComboBox1 est l'une des valeurs : 1, 2, 4 ou 5 - les ComboBox2 et ComboBox3 sont Masquées (visible = False)
Si le choix de la ComboBox1 est la valeur 3, on affiche la ComboBox2 avec la liste des valeurs A, B, C, D ... Jusque là pas de problème, ça marche.
Après j'ai essayé de créé une "Sub ComboBox2_Change" imbriquée dans les "case", mais ça me dit que le nom est ambiguee.
Et en récréant un Select Case cela ne fonctionne pas.
Ce que je voudrais faire (dans le cas de la valeur 3 dans la ComboBox1):
Si le choix de la ComboBox2 est l'une des valeurs : A, B ou D - la ComboBox3 est Masquée (visible = False)
Si le choix de la ComboBox2 est la valeur C, on affiche la ComboBox3 avec la liste des valeurs C1, C2, C3 ...
Je ne suis peut être pas très clair, n'hésitez pas à me faire préciser des choses.
Et je remercie d'avance ceux qui pourront m'aider.