[VBA] Procédure pour plusieurs UserForm
Résolu
Bonjour,
je souhaiterais créer une procédure valable pour plusieurs UserForms permettant d'ajouter des éléments dans des combobox. Je ne peux pas passer un userform en variable ? Je pensais à quelque chose dans ce genre mais cela ne fonctionne pas:
monformulaire.Controls("ComboBox" & a).AddItem
ou
UserForm(k).Controls("ComboBox" & a).AddItem
sachant que le :
UserForm1.Controls("ComboBox" & a).AddItem
fonctionne très bien.
Quelqu'un saurait il m'aider ?
D'avance merci.
je souhaiterais créer une procédure valable pour plusieurs UserForms permettant d'ajouter des éléments dans des combobox. Je ne peux pas passer un userform en variable ? Je pensais à quelque chose dans ce genre mais cela ne fonctionne pas:
monformulaire.Controls("ComboBox" & a).AddItem
ou
UserForm(k).Controls("ComboBox" & a).AddItem
sachant que le :
UserForm1.Controls("ComboBox" & a).AddItem
fonctionne très bien.
Quelqu'un saurait il m'aider ?
D'avance merci.
6 réponses
-
Autant pour moi,
la réponse était simplement:
sub toto(formulaire,a,b)
formulaire.Controls("ComboBox" & b).AddItem i
end sub
avec appel (situé sur UserForm1):
Call UserForm2.toto(UserForm1, 1, 2)
(on passe le formulaire, le numéro des combobox utilisées en paramètre)
Merci pour votre aide en tous les cas. -
ContributeurBonsoir,
essaie comme ça :
Sub appel()
Call test(UserForm1)
Call test(UserForm2)
End Sub
Sub test(form)
form.ComboBox1.AddItem "toto"
End Sub
en nommant ton combobox ComboBox1 dans tous les formulaires.
eric -
Merci pour ta réponse,
le hic c'est que j'utilise 2 combobox par userform qui n'ont pas les meme noms, je les passe donc en parametre comme le nom du formulaire, mais cela ne fonctionne pas -
ContributeurBonjour,
comme ça peut-etre alors :
For Each Control In UserForm1.Controls
If Control.Name = "ComboBox1" Or Control.Name = "ComboBox2" Then
'...additem
End If
Next Control
ou tu utilises la propriété tag des controles concernés et tu testes dessus...
eric -
ContributeurBonjour, Bonjour Eric,
Passe ton combo directement en paramètre, le parent sera pris en compte,Sub Test( C as ComboBox) C.Additem.....
A mettre dans un module général (Module1 par exemple).
Exemple d'appel..
Test LeNomDuCombo
A+
-
Merci pour votre aide,
Sachant que cela: form.ComboBox1.AddItem "toto" (form étant une variable passée en paramètre) fonctionne parfaitment, il n'est pas possible de faire quelque chose du genre:
form.ComboBox(a).AddItem "toto" avec form et a passés en paramètre ?
cela me parait étonnant car relativement simple et logique...
Quelqu'un aurait il une réponse (positive ou négative^^) ?