Bonjour,
Je suis en train de coder 2 ComboBox en cascade, je suis parti de ce code:
Je l'ai bien entendu adapté à mon projet, j'ai donc changé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Dim f Private Sub UserForm_Initialize() Set f = Sheets("base") Set MonDico = CreateObject("Scripting.Dictionary") For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1 MonDico(c.Value) = "" ' on ajoute l'élément de la famille au dictionnaire Next c Me.Famille.List = MonDico.keys End Sub Private Sub Famille_click() Me.SousFamille.Clear Set MonDico = CreateObject("Scripting.Dictionary") For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row) ' on explore la colonne de niveau 1 If c = Me.Famille Then MonDico(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire Next c Me.SousFamille.List = MonDico.keys End Sub
-la référence de la feuille utilisée Sheets("base") devient Sheets("databasenoms")
-Famille devient ComboBox1
-SousFamille devient ComboBox2
-MonDico devient nom
-Range("B2:B" & f.[B65000].End(xlUp).Row) devient Range("A2:A" & f.[A65000].End(xlUp).Row) puisque le code d'origine fait référence à une plage différente de la mienne
J'obtiens donc:
En "fonctionnement", je peux sélectionner une valeur dans ma ComboBox1, cependant une erreur Objet requis apparaît ici dans Private Sub ComboBox1_click():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Dim f Private Sub UserForm_Initialize() Set f = Sheets("databasenoms") Set nom = CreateObject("Scripting.Dictionary") For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 nom(c.Value) = "" ' on ajoute l'élément de la famille au dictionnaire Next c Me.ComboBox1.List = nom.keys End Sub Private Sub ComboBox1_click() Me.ComboBox2.Clear Set nom = CreateObject("Scripting.Dictionary") For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 If c = Me.ComboBox1 Then nom(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire Next c Me.ComboBox2.List = nom.keys End Sub
Je tourne en rond depuis ce matin et je commence à perdre
Code : Sélectionner tout - Visualiser dans une fenêtre à part For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1patienceespoir... Si vous pouviez me dire d'où cela peut venir je vous en serez éternellement reconnaissant![]()
Partager