Bug Excel VBA avec une variable que si remet a zero toute seule
Le
Rémi
Bonjour à tous,
Voila je fais souvent des interventions sur le news Microsoft Excel italien.
Et ces derniers jours nous avons rencontré ce problème, qui au premier
regard parait tout simple mais incompréhensible.
Voilà : le but est de faire une variable que va de 1 en 1 avec deux macros.
la macro un augmente de un la variable
la macro deux ouvre un useform et augmente de 1 la variable
sur l'userform, suelement un objet label.
Pb : sur la macro 1 tout va bien, sur la macro 2, la variable se remet a
zero toute seule.
Mais chose encore plus étrange, est qu'elle ne se met à zero que si le VBE
est ouvert, sinon, il n'y a pas de pb !?
Ce phénomène ne se fait pas sur tout les ordi, mas nous n'avons pas encore
réussi à comprendre sur quel type le pb aparait ou non.
Voila en syntèse, je vous metle code ci jont, et vous demande de tester pour
voir si vous aussi rencontrez ce pb, et si quelqu'un à déjà vu ce pb.
Dans un module :
Public Num As Integer
Sub IncrementaNum1()
Num = Num + 1
Range("A1") = Num
End Sub
Sub IncrementaNum2()
Num = Num + 1
UserForm1.Show
Range("A1") = Num
End Sub
dans l'userform
Private Sub UserForm_Click()
Label1.Caption = 1
End Sub
Voila c'est tout !!! c'est tout bête mais tres bizzare. Merci d'avance de
prendre le tps de tester et de me donner vos impressions et suggestions.
Rémi.
Voila je fais souvent des interventions sur le news Microsoft Excel italien.
Et ces derniers jours nous avons rencontré ce problème, qui au premier
regard parait tout simple mais incompréhensible.
Voilà : le but est de faire une variable que va de 1 en 1 avec deux macros.
la macro un augmente de un la variable
la macro deux ouvre un useform et augmente de 1 la variable
sur l'userform, suelement un objet label.
Pb : sur la macro 1 tout va bien, sur la macro 2, la variable se remet a
zero toute seule.
Mais chose encore plus étrange, est qu'elle ne se met à zero que si le VBE
est ouvert, sinon, il n'y a pas de pb !?
Ce phénomène ne se fait pas sur tout les ordi, mas nous n'avons pas encore
réussi à comprendre sur quel type le pb aparait ou non.
Voila en syntèse, je vous metle code ci jont, et vous demande de tester pour
voir si vous aussi rencontrez ce pb, et si quelqu'un à déjà vu ce pb.
Dans un module :
Public Num As Integer
Sub IncrementaNum1()
Num = Num + 1
Range("A1") = Num
End Sub
Sub IncrementaNum2()
Num = Num + 1
UserForm1.Show
Range("A1") = Num
End Sub
dans l'userform
Private Sub UserForm_Click()
Label1.Caption = 1
End Sub
Voila c'est tout !!! c'est tout bête mais tres bizzare. Merci d'avance de
prendre le tps de tester et de me donner vos impressions et suggestions.
Rémi.

Poser une question


Label1.Caption = 1
??
y a t'il un erreur de transcription sur cette ligne ?
isabelle
peut pas influencer sur la variable.
Rémi.
"isabelle" news:
cas, il n'y a pas de remise à zéro.
isabelle
la première chose à laquelle j'ai pensé c'est de renommer
plus clairement la variable ,
l'utilisation du terme "num" me fait penser à un mot
réservé !!!
à tout hasard
essaie avec par exemple mia_variabile
ciao !!!
;o)))
Tu ne peux pas considérer que ta variable Public Num aura une longévité
éternelle (contrairement à ce qui est coutume dans d'autres langages).
En VBA, il existe des événements (l'instruction End, un 'Reset' dans
l'environnement VBE, la fermeture d'un classeur) qui réinitialise tes variables
globales à zéro.
Si tu as absolument besoin de t'assurer que ta variable conserve sa valeur même
en cas d'arrêt de procédure, tu devrais utiliser un Nom qui réfère à une cellule
(celle-ci pourrait être située dans une ligne cachée, ou une feuille cachée).
Ainsi, après avoir défini ce nom (Ctrl-F3, "UnNumero"), tu y accèdes dans ton
code par
Range("UnNumero")
Ça continue alors de s'incrémenter même en cas de pépin et d'arrêt intempestif
(End) de ton code.
Salutations,
Daniel M.
"Rémi" news: