Rechercher : dans
Par :

[VBA] Procédure pour plusieurs UserForm

Dernière réponse le 30 mai 2009 à 12:51:22 ksa, le 29 mai 2009 à 22:25:30 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [VBA] Procédure pour plusieurs UserForm » dans :
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
VBA : Trouver Hdc d'une feuille Excell et Userform VoirPour démontrer la façon de trouver les Hdc j'ai ajouté deux petits exemples de dessin. En cliquant sur la Feuil1 l'Userform est affiché. Mettre le pointeur sur l'UF, maintenir le bouton gauche enfoncé et déplacer la souris. En fermant l'UF la sub...
[VBA] Enlever la croix rouge d'un UserForm. VoirIl est parfois intéressant de supprimer la possibilité de sortir d'un userform tant que toutes les entrées n'ont pas été saisies, mais voilà, il reste toujours cette croix qui autorise l'utilisateur à sortir. Le code ci-dessous permet d'oter cette...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
Les procédures en assembleur VoirLa notion de procédure En langage assembleur, on appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la procédure. Cette notion de sous-programme est généralement appelée fonction dans d'autres...

1

eriiic, le 30 mai 2009 à 01:28:11

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

Répondre à eriiic

2

ksa, le 30 mai 2009 à 10:34:00

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

Répondre à ksa

3

eriiic, le 30 mai 2009 à 11:03:14

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

Répondre à eriiic

4

lermite222, le 30 mai 2009 à 11:14:56

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+
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

5

ksa, le 30 mai 2009 à 12:40:47

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^^) ?

Répondre à ksa

6

 ksa, le 30 mai 2009 à 12:51:22
  • +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.

Répondre à ksa