Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Q][VBA] Comment réinitialiser des variables déclarées en entête d'=

3 réponses
Avatar
JCF
Bonjour à tous!
J'ai une formule VBA qui appelle une sub, les deux sont stockées dans le
même module. Pour pouvoir transmettre différentes valeurs de la formule
à la sub, j'ai déclaré en entête de mon module l'ensemble des variables
utilisées par ces deux procédures.
J'ai déclaré la sub en static private afin qu'elle ne perde pas la
valeur des compteurs et autres entre les différents appels qu'elle
reçoit de la formule (la sub est en effet appelée de très nombreuses
fois pour une seule session de la formule).
L'inconvénient que je rencontre à présent est que d'une utilisation de
la formule à l'autre, certaines valeurs restent en mémoire et perturbent
le calcul.
Y a t'il moyen, en début de ma formule, de réinitialiser les variables
déclarées en entête, afin qu'elles soient dans le même état que si je
venais de les déclarer? => Pour l'instant j'essaye de contourner le
problème en les mettant une à une à zéro ou "" selon les variables, mais
cela perturbe énormément le reste de mon code, qui marchait parfaitement
avant que j'en externalise une partie dans la sub...
Merci d'avance pour vos réponses!
Jean-Christophe

3 réponses

Avatar
papou
Bonjour
Erase tablo()

Cordialement
Pascal

<JCF> a écrit dans le message de
news:20040630115507009+
Bonjour à tous!
J'ai une formule VBA qui appelle une sub, les deux sont stockées dans le
même module. Pour pouvoir transmettre différentes valeurs de la formule
à la sub, j'ai déclaré en entête de mon module l'ensemble des variables
utilisées par ces deux procédures.
J'ai déclaré la sub en static private afin qu'elle ne perde pas la
valeur des compteurs et autres entre les différents appels qu'elle
reçoit de la formule (la sub est en effet appelée de très nombreuses
fois pour une seule session de la formule).
L'inconvénient que je rencontre à présent est que d'une utilisation de
la formule à l'autre, certaines valeurs restent en mémoire et perturbent
le calcul.
Y a t'il moyen, en début de ma formule, de réinitialiser les variables
déclarées en entête, afin qu'elles soient dans le même état que si je
venais de les déclarer? => Pour l'instant j'essaye de contourner le
problème en les mettant une à une à zéro ou "" selon les variables, mais
cela perturbe énormément le reste de mon code, qui marchait parfaitement
avant que j'en externalise une partie dans la sub...
Merci d'avance pour vos réponses!
Jean-Christophe


Avatar
michdenis
Bonjour JCF,

Voici un exemple "simpliste" sur la façon de passer des variables entre procédures

'--------------------
Sub MesCalculs()

Dim A As Double
Dim B As Double

A = Application.Sum(Range("A1:A10"))
B = Application.Sum(Range("B1:B10"))

LaSomme2Plages A, B

End Sub
'---------------------------

Sub LaSomme2Plages(A As Double, B As Double)

MsgBox A + B

End Sub
'---------------------------


Salutations!



<JCF> a écrit dans le message de news:20040630115507009+
Bonjour à tous!
J'ai une formule VBA qui appelle une sub, les deux sont stockées dans le
même module. Pour pouvoir transmettre différentes valeurs de la formule
à la sub, j'ai déclaré en entête de mon module l'ensemble des variables
utilisées par ces deux procédures.
J'ai déclaré la sub en static private afin qu'elle ne perde pas la
valeur des compteurs et autres entre les différents appels qu'elle
reçoit de la formule (la sub est en effet appelée de très nombreuses
fois pour une seule session de la formule).
L'inconvénient que je rencontre à présent est que d'une utilisation de
la formule à l'autre, certaines valeurs restent en mémoire et perturbent
le calcul.
Y a t'il moyen, en début de ma formule, de réinitialiser les variables
déclarées en entête, afin qu'elles soient dans le même état que si je
venais de les déclarer? => Pour l'instant j'essaye de contourner le
problème en les mettant une à une à zéro ou "" selon les variables, mais
cela perturbe énormément le reste de mon code, qui marchait parfaitement
avant que j'en externalise une partie dans la sub...
Merci d'avance pour vos réponses!
Jean-Christophe
Avatar
JCF
michdenis wrote:
Voici un exemple "simpliste" sur la faÁon de passer des variables
entre procÈdures
Bonjour michdenis!

Ben en fait je sais passer les variables d'une sub à une autre, mais en
fait là mon problème, c'est que la sub n°2 doit rendre tout une série de
résultats à la fonction (qui est la procédure n°1). En fait la sub n°2
sous traite tout une série d'actions. Et en la matière, elle ne rappelle
pas la fonction en lui donnant la série de résultats. D'où la nécessité
de déclarer les variables en entête, mais aussi le problème que du coup,
entre deux appels de la fonction, les variables ne se réinitialisent pas!
Mais je pense que la solution donnée par papou, la commande Erase, est
la bonne!!
Merci à vous deux pour votre aide en tout cas!
A+
Jean-Christophe