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

6 réponses

  1. 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.
    1. Contributeur
      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
      1. 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
        1. Contributeur
          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
          1. Contributeur
            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+
            1. 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^^) ?