Bonjour, bonsoir!
Je me présente à vous avec un soucis concernant le scripting.dictionary, je l'utilise sur deux combobox en cascade, le premier contient des noms d'articles et le second les tailles des articles sélectionnés (genre S,L,XL, 39, 40, 41,....), au final en fonction de l'article et de la taille sélectionnés, le nombre d'article en stock s'affiche dans une textbox.
Cela fonctionne très bien pour les noms et tailles en lettres mais rien ne s'affiche dans la textbox lorsque je sélectionne une taille d'article en nombre (type taille de chaussure: 44). De plus, si le nom d'un article est en nombre, là ce sont les tailles qui ne s'affichent plus dans la deuxième combobox (tailles en nombres et/ou chiffres).
Je vous joint mon code pour voir ce qu'il manque ou ce qu'il est nécessaire de modifier pour réparer tout ça ^^
La ComboBox4 correspond à la première Combobox, la Combobox6 correspond à la suivante, et la TextBox5 à la textbox devant contenir le nom d'article en stock (les noms d'articles, les tailles et le nombre d'articles en stock sont sur la même feuille excel dans l'ordre suivant: colA:nom article; colB:taille; colC:nombre d'articles en stock).
Cette partie-ci sert à une autre partie de mon userform et fonctionne très bien:
Code à problème:
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
19
20 Dim f,g Private Sub UserForm_Initialize() Set f = Sheets("databasenoms") Set MonDicoNom = CreateObject("Scripting.Dictionary") For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 MonDicoNom(c.Value) = "" ' on ajoute l'élément de la famille au dictionnaire Next c Me.ComboBox1.List = MonDicoNom.keys End Sub Private Sub ComboBox1_click() Me.ComboBox2.Clear Set f = Sheets("databasenoms") Set MonDicoNom = 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 MonDicoNom(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire Next c Me.ComboBox2.List = MonDicoNom.keys End Sub
Merci à tous ceux qui se pencheront sur mon problème!
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Dim f,g Private Sub UserForm_Initialize() Set f = Sheets("databasenoms") Set MonDicoNom = CreateObject("Scripting.Dictionary") For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 MonDicoNom(c.Value) = "" ' on ajoute l'élément de la famille au dictionnaire Next c Me.ComboBox1.List = MonDicoNom.keys Set g = Sheets("databasemateriel") Set MonDicoDesignation = CreateObject("Scripting.Dictionary") For Each d In g.Range("A5:A" & g.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 MonDicoDesignation(d.Value) = "" ' on ajoute l'élément de la famille au dictionnaire Next d Me.ComboBox4.List = MonDicoDesignation.keys End Sub Private Sub ComboBox1_click() Me.ComboBox2.Clear Set f = Sheets("databasenoms") Set MonDicoNom = 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 MonDicoNom(c.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire Next c Me.ComboBox2.List = MonDicoNom.keys End Sub Private Sub ComboBox4_click() Me.ComboBox6.Clear Me.TextBox5.Value = "" Set g = Sheets("databasemateriel") Set MonDicoDesignation = CreateObject("Scripting.Dictionary") For Each d In g.Range("A5:A" & g.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 If d = Me.ComboBox4 Then MonDicoDesignation(d.Offset(, 1).Value) = "" ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire Next d Me.ComboBox6.List = MonDicoDesignation.keys End Sub Private Sub ComboBox6_click() Set g = Sheets("databasemateriel") For Each d In g.Range("A5:A" & g.[A65000].End(xlUp).Row) ' on explore la colonne de niveau 1 If d = Me.ComboBox4 And d.Offset(, 1) = Me.ComboBox6 Then Me.TextBox5 = d.Offset(, 2) ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire Next d End Sub
Cordialement,
SpcCwb.
Partager