ComboBox dépendantes avec If Else
Bonjour tout le monde,
Débutant en vba, j'ai créé un UserForm pour que l'on puisse directement renseigner un tableau excel.
Je souhaiterais que plusieurs combobox soient dépendantes. Par exemple, si A est sélectionné dans la ComboBox1, je souhaiterais que la liste de propositions dans la combobox2 change. De sorte que :
Nous avons A, B et C dans la Combobox1 et A1, A2 et A3 dans la Combobox2 si A a été sélectionné. B1, B2, B3 si la proposition B a été sélectionné dans la combobox1, etc.
J'ai donc écrit le code vba ci-dessous qui ne fonctionne pas.
Lorsque j'exécute mon userform, j'ai bien ma liste de propositions dans la Combobox1 mais rien ne s'affiche dans la Combobox2...
Private Sub UserForm_Initialize()
ComboBox1.AddItem "A"
ComboBox1.AddItem "B"
ComboBox1.AddItem "C"
End Sub
Private Sub ComboBox5_Change()
If ComboBox1.Value = "A" Then
ComboBox2.AddItem "A1"
ComboBox2.AddItem "A2"
ComboBox2.AddItem "A3"
ElseIf ComboBox1.Value = "B" Then
ComboBox2.AddItem "B1"
ComboBox2.AddItem "B2"
ComboBox2.AddItem "B3"
ElseIf ComboBox1.Value = "C" Then
ComboBox2.AddItem "C1"
ComboBox2.AddItem "C2"
ComboBox2.AddItem "C3"
Else: ComboBox2 = ""
End If
End SubEn vous remerciant par avance pour votre aide !
mm_b
Bonjour,
Sans données confidentielles
Sinon une idée dans le fichier ici --> https://forum.excel-pratique.com/s/goto/1065143
Cordialement
Bonjour, voici le fichier en question :
Dans le fichier, mon problème concerne la combobox 5 et 6
Merci pour vos propositions :)
Oui normal dans le code Private sub combobox5_change vous mentionnez Combobox1 et Combobox2 dans le elseif
Le code comme ceci
Private Sub ComboBox5_Change()
ComboBox6.Clear
If ComboBox5.Value = "Ceci est la proposition A" Then
ComboBox6.AddItem "Afficher la proposition A1"
ComboBox6.AddItem "Afficher la proposition A2"
ComboBox6.AddItem "Afficher la proposition A3"
ElseIf ComboBox5.Value = "Ceci est la proposition B" Then
ComboBox6.AddItem "Afficher la proposition B1"
ComboBox6.AddItem "Afficher la proposition B2"
ComboBox6.AddItem "Afficher la proposition B3"
ElseIf ComboBox5.Value = "Ceci est la proposition C" Then
ComboBox6.AddItem "Afficher la proposition C1"
ComboBox6.AddItem "Afficher la proposition C2"
ComboBox6.AddItem "Afficher la proposition C3"
End If
End Subou plus simple comme ceci :
Private Sub ComboBox5_Change()
Dim i As Byte
Dim J As String
ComboBox6.Clear
Select Case ComboBox5.Value
Case "Ceci est la proposition A": J = "A"
Case "Ceci est la proposition B": J = "B"
Case "Ceci est la proposition C": J = "C"
End Select
For i = 1 To 3
ComboBox6.AddItem "Afficher la proposition " & J & i
Next i
end subRem :
- Le mieux serait que vous prépariez votre fichier avec les vraies valeurs. Le cas échéant vous risquez de devoir tout changer à nouveau une fois que vous aurez mis les données. exemple : à quoi correspond "Ceci est la proposition A1" ?
- Attention avec les accents utilisés pour les noms dans le gestionnaire de noms. Evitez à tout prix, vous risquez toujours d'avoir un souci. Pensez anglais !. ex : Base_de_donnees au lieu de base_de_données
- Le code Ajouter devrait être revu complètement vu que votre tableau est au format structuré
Cordialement