Déclaration et attribution de valeur à une variable publique

Bonjour à tous,

Je ne sais pas comment on peut déclarer une variable en VBA de façon publique et lui attribuer une valeur de façon publique.

C'est à dire que dans chaque feuille ou module d'un même classeur elle démarre avec la même valeur.

Ma question est peut être idiote mais même en ayant épluché les forums je n'ai pas trouvé, peut être n'ai je pas recherché avec les bon mots clés ou peut être que ce n'est pas faisable...

Merci d'avance de vos réponses.

Public epee As String

et à mon avis tu dois réinitialiser la valeur à chaque début de procédure

Bonjour,

Pour compléter ce que dit Steelson [ ] il te faut de préférence déclarer ta variable dans un module Standard...

Une variable est privée par défaut, c'est à dire qu'une variable de niveau Module déclarée avec Dim n'est accessible que par les procédures du même module. Déclarée avec Public, elle devient publique, soit accessible à partir de n'importe quel module du projet.

Cependant si elle se trouve dans un module public, il suffit d'invoquer son nom pour y accéder et renvoyer sa valeur, mais si le module est privé, le nom du module est requis pour la renvoyer (NomModule.epee).

Les modules Standard sont public par défaut. Ils deviennent privés si la déclaration : Private Module est apposée en tête du Module.

Les autres modules (en laissant de côté les modules de classe) sont par définition privés (Modules de feuilles, classeur, Userforms)...

L'initialisation peut se faire à l'ouverture du classeur, en utilisant la procédure Workbook_Open (dans ThisWorkbook).

Cette valeur sera conservée tant que tu ne la modifies pas au cours de l'exécution du programme...

Pour en dire plus, il faudrait savoir de quelle façon tu entends l'utiliser.

Cordialement.

Alors je rebondie sur ce que vous venez de dire, déjà en premier lieu je ne sais pas si mes modules sont privés ou public comment défini-t-on l'un ou l'autre ? Je n'ai jamais apposé la mention private module, mais mes feuilles sont elles ce que tu appelles des modules de feuilles et donc sont elles privées ?

D'après ce que tu me dis mes modules sont appelés par défaut module1, module2 je suppose donc qu'ils sont public...

Et concernant l'initialisation de mes variables dans le workbook open c'est tout bête mais je n'y avais pas pensé, mais ça devrait correspondre à mon besoin en fait donc dans workbook open je fais ma déclaration de variable publique et en dessous je leur attribut une valeur ?

Ce qui fait que dans toutes les feuilles et modules où j'appellerais cette variable en écrivant "mavariable" ou "thisworkbook.mavariable" elle aura la valeur que j'ai fixé dans workbook open ?

Damocles a écrit :

Ce qui fait que dans toutes les feuilles et modules où j'appellerais cette variable en écrivant "mavariable" ou "thisworkbook.mavariable" elle aura la valeur que j'ai fixé dans workbook open ?

J'ai testé ce que je disais ça fonctionne ! Donc un grand merci !

Par contre mon module a bel et bien l'air privé car j'ai du mettre : ThisWorkbook.test

En image, le schéma de ce que tu peux avoir :

fcgo3o7

Volet gauche, c'est l'Explorateur de Projets :

sous le dossier Microsoft Excel Objets, tu as les modules des feuilles de calcul et du classeur : ces modules sont privés, et il est souhaitable de les réserver pour l'essentiel aux procédures d'évènements.

sous Feuilles (Userforms) les modules sont également privés...

sous Modules : les modules Standard (autrefois appelés modules de code), publics par défaut : le code habituel se place dans de tels modules. Il est souhaitable de ne pas les multiplier sans raison qui le justifient car cela tend à compliquer la maintenance du programme plutôt qu'à la simplifier...

La variable déclarée dans Module1 est accessible de tout le projet. Son initialisation à l'ouverture fait qu'à partir de là elle renverra sa valeur partout où on l'appellera...

Cordialement.

Merci c'est on ne peut plus clair ! Merci bien.

Rechercher des sujets similaires à "declaration attribution valeur variable publique"