Bonjour a tous,
Je tente de faire des Combobox en cascade sur 5 niveaux. J'ai trouve la methode de remplissage de combobox grace au dictionnaire. Je souhaiterai conserver cette methode (sur mon vrai fichier, c'est la seule qui fonctionne). Apres plusieurs tentatives, j'ai reussi a remplir la deuxieme Combo en fonction de la premiere:
Le probleme survient a la fin du code de la deuxieme Combo a Me.ComboBox3.List = MonDico : le message d'erreur est 424 - object required
Dim f
Private Sub UserForm_Initialize()
Set f = Sheets("DB")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)
MonDico(c.Value) = ""
Next c
Me.ComboBox1.List = MonDico.keys
End Sub
Private Sub ComboBox1_click()
Set f = Sheets("DB")
Me.ComboBox2.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)
If c = Me.ComboBox1 Then MonDico(c.Offset(, 1).Value) = ""
Next c
Me.ComboBox2.List = MonDico.keys
End Sub
Private Sub ComboBox2_click()
Set f = Sheets("DB")
Me.ComboBox3.Clear
For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 Then Me.ComboBox2 = c.Offset(, 1) ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
Next c
Me.ComboBox3.List = MonDico.keysEnd Sub
Quelqu'un peut m'aider sur ce point? je pense que c'est une erreur d'adaptation de code (nom/numero de colonne etc...). Pouvez-vous eventuellement en meme temps expliquer le raisonnement, pour que je puisse aussi adapter seule les etapes 4 et 5 ensuite?
Merci beaucoup pour votre aide
Je tente de faire des Combobox en cascade sur 5 niveaux. J'ai trouve la methode de remplissage de combobox grace au dictionnaire. Je souhaiterai conserver cette methode (sur mon vrai fichier, c'est la seule qui fonctionne). Apres plusieurs tentatives, j'ai reussi a remplir la deuxieme Combo en fonction de la premiere:
Le probleme survient a la fin du code de la deuxieme Combo a Me.ComboBox3.List = MonDico : le message d'erreur est 424 - object required
Dim f
Private Sub UserForm_Initialize()
Set f = Sheets("DB")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)
MonDico(c.Value) = ""
Next c
Me.ComboBox1.List = MonDico.keys
End Sub
Private Sub ComboBox1_click()
Set f = Sheets("DB")
Me.ComboBox2.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)
If c = Me.ComboBox1 Then MonDico(c.Offset(, 1).Value) = ""
Next c
Me.ComboBox2.List = MonDico.keys
End Sub
Private Sub ComboBox2_click()
Set f = Sheets("DB")
Me.ComboBox3.Clear
For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1
If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 Then Me.ComboBox2 = c.Offset(, 1) ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
Next c
Me.ComboBox3.List = MonDico.keysEnd Sub
Quelqu'un peut m'aider sur ce point? je pense que c'est une erreur d'adaptation de code (nom/numero de colonne etc...). Pouvez-vous eventuellement en meme temps expliquer le raisonnement, pour que je puisse aussi adapter seule les etapes 4 et 5 ensuite?
Merci beaucoup pour votre aide