[VBA-E]Listes Imbriquées : comment optimiser?
Bonjour à tous,
Je travaille en ce moment sur une Macro en VBA et j'aimerais utiliser des listes de choix dépendantes les unes des autres.
Au départ, il faut savoir que les données source de mes listes se trouvent dans un tableau à 3 dimensions.
Pour l'instant, j'utilise un système un peu batard comme cela :
Code:
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
| Sub Plage()
For NbFamille = 1 To 30
If Tableau_OC(0, NbFamille, 1) <> "" Then
Worksheets("BDD").Cells(NbFamille, 1).Value = Tableau_OC(0, NbFamille, 1)
NbFMax = NbFamille
End If
Next NbFamille
ActiveWorkbook.Names.Add Name:="Famille", RefersToR1C1:="=BDD!R1C1:R" & CStr(NbFMax) & "C1"
Sheets("AffectationOC").Select
Cells(1, 1).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Famille"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub |
L'idée, c'est que je recopie les données de la ligne (0,x,1) de mon tableau dans une feuille (nommée BDD) et qu'ensuite, je créé la liste à partir des valeurs créées dans cette feuille.
Ma première question est donc de savoir si il est possible de remplir ma liste de choix directement à partir de mon tableau, et si oui, comment procéder.
J'ai vu dans l'aide de VBA et sur certains sites que l'on pouvait utiliser des instructions type :
Code:
ListBox1.AddItem Machin
Mais après, je sais pas comment lier les données de ListBox1 à ma cellule... :?
Ensuite, la seconde difficulté que je rencontre est la liaison des listes entre elles. Je sais que je peux lier mes données par l'adressage de mon tableau, mais je ne sais pas comment détecter le changement d'état de la cellule "mère".
Je sais où aller chercher les données de la liste de la cellule "fille" en fonction de celles choisies dans la cellule "mère", mon problème est de savoir quand?
Y-a-t il donc un moyen simple de détecter un clic sur la cellule mère, ou alors un changement d'état???
Merci de vos réponses!