Perte de valeur de variable globale

Bonjour,

Dans mon programme VBA j'ai j'ouvre différents classeurs depuis un classeur principal où les utilisateurs se connecte. Lorsque l'utilisateur se connecte sur ce premier classeur, je récupère son nom et son id métier qui me sert ensuite dans mes autres classeurs. Lorsque j'ouvre un second classeur avec toujours le classeur principale d'ouvert, tout fonctionne, je peux récupérer les variables pour les insérer dans le second classeur. J'ai un bouton dans le second classeur qui me sert à retourner sur le classeur principal et la maccro associée à ce bouton permet entre autre de fermer ce second classeur. Lorsque je clique sur ce bouton cela me réinitialise toute les valeurs alors que à aucun moment dans mon code je le demande. En enlevant la ligne Workbooks(NameClasseur).close true, tout fonctionne et cela ne me réinitialise pas les variables. J'en déduit donc que lorsque je ferme ce second classeur cela me réinitialise les variables. Je voudrais savoir pourquoi et comment contourner ce problème en code VBA et sans insérer les informations dans une cellule ou quoi. Merci.

Bonjour,

Si ta variable résiste à une fermeture, il n'y a pas de raison qu'elle ne résiste pas aux autres fermetures tant que ton classeur programme est ouvert.

Cependant si une variable n'est chargée qu'en mémoire elle peut être sensible aux erreurs d'exécutions. Dans ce cas (en particulier en période de test, il peut être utile de la stocker "en dur" par exemple dans un range "hidden" et de la récupérer avec une gestion d'erreur.

A+

Merci galopin01 pour ton message. Au final j'ai crée une liste nommée pour les variables comme suit.

Sub sauvegarder_variable()
var1 = 1000
ActiveWorkbook.Names.Add Name:="mavariable", RefersToR1C1:= var1
MsgBox [mavariable]
End Sub

Rechercher des sujets similaires à "perte valeur variable globale"