OVH Cloud OVH Cloud

Variable globale ?

2 réponses
Avatar
Myriam
Bonjour à toutes et tous !

Je voudrais définir une variable globale afin de pouvoir utiliser cette
variable dans toutes la macro vb d'un Classeur.

- Le nom de ce Classeur peut varié et contient des macros où le nom du
Classeur est indispensable car il contient des tables réutilisées dans les
macros.
- Si l'utilisateur change le nom du Classeur, les macros ne fonctionne plus
correctement !

Cette variable doit me permettre de détecter le nom du Classeur à
l'ouverture (s'il a changé) de façon à ce que mes macros continuent à
fonctionner !
Genre : *Private Sub Workbook_open()
*ClasseurMacro = ActiveWorkbook.Name
*End Sub
(Heu là ça marche pô !)
Merci !
--
______________________________________
J'aime bien les NewsGroup mais pas les virus !!!
Retirer la 'Virgule.' si vous voulez répondre !!
Myriam.M Virgule.la.bande.a.Basil@Netcourrier.com

2 réponses

Avatar
OnE
Bonjour,

Sans être tout à fait sûr de ce que j'avance, il me semble qu'une
variable n'est effective qu'au niveau d'une procédure, sauf si cette
dernière est déclarée comme étant une variable publique.

Il suffit donc dans ton cas de rajouter la ligne suivante avant tes
procédures

Public ClasseurMacro


Bonjour à toutes et tous !

Je voudrais définir une variable globale afin de pouvoir utiliser cette
variable dans toutes la macro vb d'un Classeur.

- Le nom de ce Classeur peut varié et contient des macros où le nom du
Classeur est indispensable car il contient des tables réutilisées dans les
macros.
- Si l'utilisateur change le nom du Classeur, les macros ne fonctionne plus
correctement !

Cette variable doit me permettre de détecter le nom du Classeur à
l'ouverture (s'il a changé) de façon à ce que mes macros continuent à
fonctionner !
Genre : *Private Sub Workbook_open()
*ClasseurMacro = ActiveWorkbook.Name
*End Sub
(Heu là ça marche pô !)
Merci !
--
______________________________________
J'aime bien les NewsGroup mais pas les virus !!!
Retirer la 'Virgule.' si vous voulez répondre !!
Myriam.M




Avatar
anonymousA
bonjour,

la portée des variables peut être de niveau procédure (connue de la seule
procédure qui l'abrite) , module(c.à.d connue des toutes les procédures d'un
module) ou publique (c.à.d connues de tous les modules voire même après une
manip de référencement connue d'autres projets).
Ce faisant, la propriété nécessaire mais qui peut être dangereuse d'une
variable publique ou de niveau module ( avec evidemment des portées
différentes), c'est de conserver sa valeur une fois la procédure exécutée et
ce tant que le classeur n'est pas fermé ou que le variable n'est pas
réinitialisée soit par programmation, soit selon le mode décrit ci-dessous.
Par contre, dès que tu touches aux déclarations de variable (dans la section
déclarations du module), les variables sont réinitialisées, le compilateur
interprétant que les déclarations ayant changées, il est necessaire de
"remettre à zéro" les compteurs.
Pour des infos complémentaires , notamment les trucs du genre Private
module, se référer à l'aide de VBA est une bonne chose.

A+


Bonjour,

Sans être tout à fait sûr de ce que j'avance, il me semble qu'une
variable n'est effective qu'au niveau d'une procédure, sauf si cette
dernière est déclarée comme étant une variable publique.

Il suffit donc dans ton cas de rajouter la ligne suivante avant tes
procédures

Public ClasseurMacro


Bonjour à toutes et tous !

Je voudrais définir une variable globale afin de pouvoir utiliser cette
variable dans toutes la macro vb d'un Classeur.

- Le nom de ce Classeur peut varié et contient des macros où le nom du
Classeur est indispensable car il contient des tables réutilisées dans les
macros.
- Si l'utilisateur change le nom du Classeur, les macros ne fonctionne plus
correctement !

Cette variable doit me permettre de détecter le nom du Classeur à
l'ouverture (s'il a changé) de façon à ce que mes macros continuent à
fonctionner !
Genre : *Private Sub Workbook_open()
*ClasseurMacro = ActiveWorkbook.Name
*End Sub
(Heu là ça marche pô !)
Merci !
--
______________________________________
J'aime bien les NewsGroup mais pas les virus !!!
Retirer la 'Virgule.' si vous voulez répondre !!
Myriam.M