Diffréence entre Initialize et Activate ?

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

marabbeh

Guest
Re-,

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

Merci
 
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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
369
Réponses
9
Affichages
407
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
195
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
178
Réponses
2
Affichages
317
Retour