Appel d'une combobox par une variable - VB/VBA/VBS - Programmation
Marsh Posté le 15-01-2009 à 11:13:23
bonjour tegu,
exemple simplifé :
Concernant le programme, pour tester j'ai créé une userform avec 2 combobox (combobox1 et 2)
Je commence par un sub de lancement dans un module:
Public Sub demarrage()
Worksheets("Feuil1" ).Select
ActiveSheet.AutoFilterMode = False
remplissage_combobox
End Sub
Puis j'ai encore un sub qui (si c'est possible) me servira de seul sub pour remplir toute mes combobox selon des conditions (d'où la nécessité d'avoir des variables à la place de mes combobox) :
Public Sub remplissage_combobox()
Dim Cell As Range
Dim Unique As New Collection
Dim Valeur As Range
Dim i As Integer
i = Range("A65536" ).End(xlUp).Row
On Error Resume Next
For Each Cell In Range("A1:A" & i)
If Not Cell.EntireRow.Hidden Then Unique.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
For Each Valeur In Unique
UserForm1.ComboBox1.AddItem Valeur
Next Valeur
UserForm1.Show
End Sub
Ceci est la 1ère condition quand je démarre mon programme, à savoir remplissage de la combobox1.
Maintenant je voudrais que dans la userform, si je change la valeur de la combobox1, cela me relance le code précédent mais avec le remplissage de ma combobox2 (avec les données de la colonne B).
Ceci afin de centraliser un programme qui me remplisse les combobox.
j'espère que c'est un peu plus explicite. J'ai essayé pas mal de tournure de code mais j'avoue qu'à force je sait plus où j'en suis.
Je suis preneur de toute aide, même d'une âme charitable qui me donnerait un chemin directeur.
houba
Marsh Posté le 15-01-2009 à 11:30:09
Les UserForms ont une collection .Controls où on peut utiliser le nom du contrôle sous forme d'une variable
Si mes souvenirs sont bons, la syntaxe est du genre : userfrm.Controls(variableCombobox).AddItem...
Il te suffirait d'alimenter la variable dans ta boucle avec les bonnes infos.
À vérifier, ça fait longtemps que je n'ai pas pratiqué.
Marsh Posté le 14-01-2009 à 13:36:29
Bonjour à tous,
Voilà j'ai un problème et je bloque depuis plusieurs jours dessus.
Je suis en train de créer un programme sous excel-VBA.
J'ai une userform avec plusieurs combobox (1,2,3...).
Quand je fais un changement sur une combobox je voudrais faire appel à une procédure dans un module.
Je le déclare en public mais je voudrais pouvoir appeler un combobox par une variable.
J'ai du mal à bien exprimer mon besoin mais en "gros" j'aimerais pouvoir avoir une formule du style :
userform1.combobox & ma variable (1,2,3...).value/additem..
mais je ne sais pas comment l'écrire.
Je penses qu'il faut que j'utilise un paramètre du style "msforms as" mais je n'arrive pas à voir comment on l'ecrit entre le code userform et le code dans un module
Merci beaucoup pour ceux qui arriveront à me sortir de là .
houba