Différence entre variable privée ou publique et variable d'argument d'un Sub

Mic13710

XLDnaute Junior
Bonjour à tous,

Je m'arrache les cheveux depuis ce matin avec un étrange comportement concernant des variables.
Pour mon application, j'ai déclaré des variables publiques. J'utilise ces mêmes variables dans les arguments de deux de mes Sub et c'est là que ça coince.
En effet, il semble que même si ces variables portent le même nom, elles sont considérées par excel comme deux variables distinctes.

Je m'explique.
J'ai 3 variables publiques que j'utilise dans différentes procédures :
Public Var1 as Boolean
Public Var2 as Boolean
Public Var3 as Boolean

Et deux Procédures utilisant ces mêmes variables :
Sub Proc1(Var1 as Boolean, Var2 as Boolean, Var3 as Boolean)
Sub Proc2(Var1 as Boolean, Var2 as Boolean, Var3 as Boolean)

Si j'écris Proc1 False, False, True
et que j'appelle à partir de Proc1 une procédure dans laquelle les mêmes variables sont utilisées, les 3 variables sont bien attribuées dans Proc1, mais ne sont pas transférées dans la procédure appelée.
Si bien que je peux avoir simultanément Var1 = False dans Proc1 et Var1 = True dans la procédure appelée !
idem pour les 2 autres variables.
J'ai beau écrire dans Proc1 un truc qui me semble stupide, mais pourquoi pas essayer :
Var1 = Var1
Var2 = Var2
Var3 = Var3
ça ne change rien : j'ai bien 2 variables portant le même nom avec 2 valeurs différentes.

Comment est-ce possible ?

Perso, je ne vois pas ce qui explique un tel comportement. J'aimerais comprendre.

Merci pour votre aide.
 

Herdet

Nous a quitté
Repose en paix
Re : Différence entre variable privée ou publique et variable d'argument d'un Sub

Je suis d'accord aussi et je suis moi-même très pointilleux sur les noms des variables et leur déclaration. J'ai bien sûr donné des noms différents et tout est ok.
C'est juste ce fonctionnement étrange avec 1 variable qui peut prendre 2 valeurs différentes sans qu'Excel ne s'en offusque qui me semble surprenant.

Bonsoir à tous et merci pour votre aide. J'aurai encore appris quelque chose.
"très pointilleux sur les noms des variables et leur déclaration"
Excellent pour pérenniser des programmes.

Encore un de ces fameux mystères de l'informatique ... qui restera sans réponse.
Quelques décennies de programmation informatique m'ont appris qu'il est plus judicieux, rapide et efficace de contourner un bug si l'on n'arrive pas à le solutionner rapidement.
Il est généralement illusoire de vouloir trouver une explication logique de ces bugs, surtout dans des logiciels gigantesques genre MS qui ont des millions de lignes de code, souvent non actualisés comme le VBA et qui trainent 35 ans d'historique depuis le MSDOS (encore présent !)
Bonne continuation
Robert
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 231
Membres
103 161
dernier inscrit
Rogombe bryan