[VBA] Procédure pour plusieurs UserForm

Résolu/Fermé
ksa - 29 mai 2009 à 22:25
 ksa - 30 mai 2009 à 12:51
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.

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.
2
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
30 mai 2009 à 01:28
Bonsoir,

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
0
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
30 mai 2009 à 11:03
Bonjour,

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 mai 2009 à 11:14
Bonjour, 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+
0
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^^) ?
0