Bonjour,
A proprement parler, il ne s'agit pas d'un vrai problème, mon code fonctionnant plutôt bien.
Je voulais juste vos avis éclairés à propos de :
> cette utilisation des tableaux structurés (pas vraiment structurée)
> les éventuels manques de "protection" dans le code (risques d'erreurs que je n'aurais pas entrevu).
1- Les 2 tables de données :
La table nommée TableauVilles qui reprend, en entête, des noms d'îles, et en colonnes, les villes correspondantes :
La table nommée TableauRues qui reprend, en entête, toutes les villes du 1er tableau structuré et, en colonnes, les noms des rues (comme vous pouvez le constater, j'ai masqué moultes colonnes) :
2- L'Userform, son module et leurs codes :
Un simple Userform (UserForm1) avec dessus, 3 Combobox : Combobox1 = îles; Combobox2 = Villes; Combobox3 = rues
Un Module avec ce code :
Le code de l'Userform :
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 Option Explicit Public Sub Appel_Userform() With UserForm1 .ComboBox1.Column = Range("TableauVilles[#Headers]").Value .Show End With End Sub Public Sub Change(CbSource As MSForms.ComboBox, CbDest As MSForms.ComboBox, nomTablo As String) If CbSource.Value <> vbNullString Then With CbDest .Clear .List = getArrayFromRange(Range(nomTablo & "[" & CbSource.Value & "]")) End With End If End Sub Private Function getArrayFromRange(Item As Range) 'volée à Pierre Fauconnier If WorksheetFunction.CountA(Item) > 0 Then If Item.Cells.Count = 1 Then Dim t(1, 1) t(1, 1) = Item.Value getArrayFromRange = t Else getArrayFromRange = Item.SpecialCells(xlCellTypeConstants).Value End If Else getArrayFromRange = Array(vbNullString) End If End Function
Je réitère donc mes deux questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Option Explicit Private Sub ComboBox1_Change() Change ComboBox1, ComboBox2, "TableauVilles" End Sub Private Sub ComboBox2_Change() Change ComboBox2, ComboBox3, "TableauRues" End Sub
> trouvez-vous des failles dans les procédures de mon Module ?,
> Que dire de l'utilisation de tableaux structurés avec des colonnes non remplies, voire vides?
Pour le coup cela entraîne une troisième question : n'y a t'il pas mieux à faire?
Pour ceux qui le souhaitent, je peux laisser traîner un fichier exemple : Demo Combo Cascade.xlsm
Partager