Appel d'une combobox par une variable

Appel d'une combobox par une variable - VB/VBA/VBS - Programmation

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

Reply

Marsh Posté le 14-01-2009 à 13:36:29   

Reply

Marsh Posté le 15-01-2009 à 10:15:07    

Désolé, je ne comprends pas ton besoin.

Reply

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


Message édité par houba7777 le 15-01-2009 à 11:13:41
Reply

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é.


Message édité par tegu le 15-01-2009 à 11:30:23
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed