[Q][VBA] Comment réinitialiser des variables déclarées en entête d'=
3 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
Bonjour
Erase tablo()
Cordialement
Pascal
<JCF> a écrit dans le message de
news:20040630115507009+0200@news.microsoft.com...
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
<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
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
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+0200@news.microsoft.com...
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
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
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
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
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