Listes déroulantes en cascade
Bonjour,
J'ai 3 combobox en cascade : niveau (ComboBoxNiveau et colonne A ), catégorie (ComboBoxCategorie et colonne B) et statut (ComboBoxStatut et colonne C) . Statut dépend de catégorie et statut. Catégorie dépend de niveau. Mes combobox sont dans un formulaire nommé UserForm3. Pour le moment mon code est le suivant :
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Liste")
' Remplir ComboBoxNiveau avec les valeurs uniques des niveaux
Dim niveaux As Collection
Set niveaux = New Collection
On Error Resume Next
For Each cell In ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).row)
niveaux.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0
For Each niveau In niveaux
Me.ComboBoxNiveau.AddItem niveau
Next niveau
End Sub
Private Sub ComboBoxNiveau_Change()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Liste")
' Effacer les ComboBox dépendants
Me.ComboBoxCategorie.Clear
Me.ComboBoxStatut.Clear
' Remplir ComboBoxCategorie en fonction de la sélection de ComboBoxNiveau
Dim categorie As Collection
Set categorie = New Collection
On Error Resume Next
For Each cell In ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).row)
If cell.Offset(0, -1).Value = Me.ComboBoxNiveau.Value Then
categorie.Add cell.Value, CStr(cell.Value)
End If
Next cell
On Error GoTo 0
For Each cat In categorie
Me.ComboBoxCategorie.AddItem cat
Next cat
End Sub
Private Sub ComboBoxCategorie_Change()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Liste")
' Effacer les ComboBox dépendants
Me.ComboBoxStatut.Clear
' Remplir ComboBoxStatut en fonction de la sélection de ComboBoxNiveau et ComboBoxCategorie
Dim statut As Collection
Set statut = New Collection
On Error Resume Next
For Each cell In ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).row)
If cell.Offset(0, -2).Value = Me.ComboBoxNiveau.Value And cell.Offset(0, -1).Value = Me.ComboBoxCategorie.Value Then
statut.Add cell.Value, CStr(cell.Value)
End If
Next cell
On Error GoTo 0
For Each stat In statut
Me.ComboBoxStatut.AddItem stat
Next stat
End SubJe n'ai aucune erreur qui s'affiche quand j'exécute le code. Cependant, quand je change la comboboxNiveau, la combobox categorie ne se remplit pas. J'ai affiché MsgBox cell.Offset(0, -1).Value & Me.ComboBoxNiveau.Value. Et même quand les valeurs sont les mêmes, ça ne passe pas dans la boucle if. Je ne vois pas l'erreur que j'ai pu faire. Avez-vous donc des pistes de pourquoi la combobox ne se remplit pas ?
Merci d'avance
bonjour et
A+
Bonjour cccc213212, le fil, le forum,
En partant de ton code, j'ai créé un fichier, un userform et les trois combobox, puis collé ton code.
Le code fonctionne bien. Les combobox en cascade affichent leur contenu.
Sur ton fichier de travail, il y a peut-être une coquille entre le nom des combobox et leurs noms dans le code.
Une faute de frappe est parfois difficile à détecter.
Bizz