Diffréence entre Initialize et Activate ?

  • Initiateur de la discussion marabbeh
  • Date de début
M

marabbeh

Guest
Re-,

Ca concerne évidemment les UserForms : quelle est la différence entre UserForm_Initialize et UserForm_Activate ?

Merci
 
@

@+Thierry

Guest
Salut Marabbeh et le Forum

Bonne Question ! La différence est simple... Mais encore faut-il savoir l'expliquer...

La Procédure placée dans l'évènement "Initialize" ne se fait que par les instructions au premier lancement du UserForm... (ou après évidemment l'instruction Unload UserForm)

Une Initialize peut être obtenu directement par des instructions comme suit :
Load UserformX (ou) UserFormX.Show (ou) UserFormX.LabelX.Caption = "Toto"... (à noter que le simple fait de faire écrire par VBA quelque chose dans un des Controls du UserForm suffit à le charger en mémoire et donc de le faire Initialiser)

La Procédure placée dans l'évènement "Activate" se fera à chaque fois que l'on utilisera UserForm.Show (après une instruction UserFormX.Hide)

Bien sur il faut entendre que lors du premier lancement d'un UserForm l'évèvement Initialize se déroule... Puis l'évènement Activate se déroule aussi...

Par contre donc, si l'on fait juste UserForm.Hide (donc le UserForm est toujours gardé en memoire avec les changements éventuels que le User a pu faire) et que l'on lance une instruction UserFormX.Show, à ce moment là seuls les instructions placées dans l'évènement Activate s'exécuteront... Et par conséquent pas celles placées dans l'évènement "Initialize"...

Voilà, c'est une nuance très importante... J'espère avoir été clair ? (Interro demain !! lol)

Bon App
@+Thierry
 
J

john

Guest
Salut,

En fait la différence entre "activate" et "initialize" est que "initialize" n'est exécuté qu'une seul fois (lors du chargement du userform), tandis qu' "activate" est exécuté à chaque fois que le "form" est activé.

Donc si tu travailles avec d'autres "form" que tu les affichent sans fermer le premier "form" totalement (par unload me), chaque fois que tu vas rappeller le "form" l'action activate va se produire.

Un petit exemple dans le fichier ci-joint.

Bonne journée.

john
 

Pièces jointes

  • hide.zip
    10.2 KB · Affichages: 403

patricktoulon

XLDnaute Barbatruc
bonjour
pour ceux qui regardent cette discussion
c'est bien plus complexe que ça
en fait le initialise est un événement module classe ( et oui les userforms sont des module classe)
et en effet comme le dit Thierry ,partout dans votre classeur si vous faite référence a une propriété / un object du classeur cet event est déclenché
Attention tout n'est pas codable dans cet event comme dans un activate
 

Discussions similaires

Statistiques des forums

Discussions
312 681
Messages
2 090 875
Membres
104 681
dernier inscrit
Gtcheumawe