[VBA] Procédure pour plusieurs UserForm

Résolu
ksa -  
 ksa -
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

  1. ksa
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. ksa
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  7. ksa
     
    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