Declaration UserForm

Bonjour à tous en vous souhaitant une excellente année.

juste une question,

est-il possible de déclarer un UserForm en variable sans passer par son initialize ?

en clair peut-on le déclarer en variable sans qu'il s'ouvre.

si oui, comment ?

merci d'avance de vos réponses.

Bonjour Titico, bonjour le forum,

Une userform nommée UserForm1, dans un module standard (Module1 par exemple) le code ci-dessous :

Public U1 As Object 'déclare la variable U1 (UserForm1)

Sub Macro1()
Set U1 = UserForm1 'définit l'userform U1
U1.Show 'lance l'UserForm1
End Sub

La procédure Macro1 ouvre l'userForm1...

Bonjour,

UserForm est un objet de type formulaire. Tu peux l'appeler par son nom dans le code. Il a ses méthodes et les propriétés.

Par exemple :

UserForm1.Show

dans le code montre à l'écran. La méthode "Initialize" permet d'initialiser les valeurs des objets que contiennent UserForm.

Si tu veux vraiment de l'aide, donne plus de précisions.

merci ThauTheme et Raja,

Set U1 = UserForm1 lance l'évènement initialize, et c'est justement ce que je voudrais éviter.

en fait je voudrait juste qu'il ait un nom de variable sans déclencher d'évènements.

merci


pour plus de précision, voilà ce que je voudrais.

mettre i et j en tant que variable dans un module

mais ne pas déclencher l'évènement initialize du UserFormM

i = UserFormM.ActiveControl.Tag 'detecte le n° du Frame

j = UserFormM.FrC(i).ActiveControl.Tag 'detecte le n° du ComboBox

a noter que FrC est un groupe de ComboBox mis dans un module de classe.

Bonjour,

Je ne vois pas l'utilité d'une variable (cela aurait un intérêt si selon le cas on lui affecte un Userform ou un autre, cela permet alors d'exécuter un même code qui manipulera des Userform différent selon le contenu de la variable).

Initialize se lance au chargement, impossible de l'empêcher, c'est la premère chose qui est effectuée, et même ton affectation à une variable interviendra après l'exécution de Initialize...

Si tu ne veux pas qu'Initilize s'exécute, tu supprimes !

Soit tu remplaces par Activate, qui s'exécute à l'affichage (et à chaque réaffichage...), donc après tes commandes préalables.

Soit tu initialises dans ta procédure de lancement : là tu maîtrises l'ordre des opérations...

L'utilisation de ActiveControl pour un Userform non affiché ne me paraît pas être un choix très judicieux... Mieux vaut cibler les contrôles que l'on veut atteindre...

Cordialement.

Bonjour Mferrand,

effectivement impossible d'éviter le initialize.

mon seul recours est d'initiliser le UserForm, le cacher avec .hide

et ensuite déclarer les variables pour les controles actifs.

merci encore pour vos réponses.

Tant que tu ne commandes pas .Show, il n'est pas visible !

Rechercher des sujets similaires à "declaration userform"