Bonjour à tous ...
Je travaille sur des fichier Excel 2003 et VBA , mais bloque actuellement devant un problème auquel je ne comprend rien :
la fermeture d'une UserForm provoque la désinitialisation de mes variables publiques ...
J'ai essayé de cerner au plus près le problème , alors plutôt qu'une longue description , je vous propose le test suivant ... ce sera bref , et ça me paraît très très étrange ..
Dans un fichier Excel tout neuf et vierge :
vous insèrez 1seul UserForm avec 1 seul CommandButton dont le code est le suivant :
Code :
- OptionExplicit
- PrivateSub CommandButton1_Click()
- Unload Me
- EndSub
|
ensuite , vous insèrez un seul module standard dont l'intégralité du code est le suivant :
Code :
- OptionExplicit
- Public Plage As Range
- Sub A()
- Set Plage = Range("A1:A10" )
- UserForm1.Show
- EndSub
|
Après execution de cette macro , vous testez : ? Plage.Address dans la fenètre "Execution" .... et si c'est comme chez moi , vous obtenez l'erreur 91 ...
Première anomalie , je crois ...
et plus étrange encore : si on modifie la macro en rajoutant simplement un msgbox , autrement dit , la macro devient ça
Code :
- Sub A()
- Set Plage = Range("A1:A10" )
- UserForm1.Show
- MsgBox Plage.Address
- EndSub
|
et alors , l'éxécution de la macro ne provoque plus d'erreur et la variable "Plage" est stabilisée ... seconde étrangeté ...
et pour finir : 3iè mystère : vous mettez en commentaire la ligne MsgBox Plage.Address , autrement dit on revient à la macro d'origine ... et bien l'éxécution de cette macro ne provoque plus l'erreur 91 , alors qu'elle la provoquait au début de ce test , ce qui , du coup me rend complètement dingue ...
Voilà , très probablement il y a une explication logique mais personellement , je sèche complétement ...
Merci beaucooup