Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment étendre la portée de la valeur d'une variable à tout un module?

  • Initiateur de la discussion Initiateur de la discussion Angus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Angus

XLDnaute Junior
Bonsoir à tous,

"Pour qu'une variable soit accessible dans toutes les procédures d'un module,il faut la déclarer dans la section Déclarations du module"

Mais comment étendre la portée de la valeur prise par une variable à toutes les procédures d'un module? (j'espère que c'est possible)

Merci d'avance.
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Bonsoir

La réponse se trouve sur ton PC

ALT+F11 puis F1

Voila ce que tu aurais trouvé

EDITION: Bonsoir Papounet
 
Dernière édition:
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Bonsoir Angus,

Il faut remplacer Dim par Public, dans la section Déclarations d'un module (n'importe lequel).

Ex :

Code:
Public MaVar As Integer

Bonne soirée.

Cordialement.

EDIT :

Bonsoir Staple1600
 
Dernière édition:
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Il faut remplacer Dim par Public, dans la section Déclarations d'un module (n'importe lequel).
Ex :
Code:
Public MaVar As Integer

Bonsoir Papou-net,

Merci pour ta réponse.

Je n'ai pas essayé ta solution, mais s'agit-il bien de la valeur de la variable?

En tous cas, j'ai trouver ce que je cherchais, il faut ajouter l'option "static" dans la déclaration de procédure:

Code:
Private Static Sub boutton1_Click()

Ainsi les valeurs prisent par les variables au sein de la procédure, les gardent au delà de cette procédure.
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Bonjour à tous,

Ainsi les valeurs prisent par les variables au sein de la procédure, les gardent au delà de cette procédure.

petite remarque au passage, à ma connaissance si tu déclares une procédure "Private Static", ce sont les variables initialisées dans cette procédure uniquement qui garderont leurs valeurs, mais tu ne pourras t'en servir que dans cette même procédure... elles ne pourrons en aucun cas être appelées par une autre procédure, même du module en question...

bonne journée
@+
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Code:
Je n'ai pas essayé ta solution, mais s'agit-il bien de la valeur de la variable?

Bonjour Angus, Staple1600, Pierrot93,

@ Angus,

Je ne comprends pas bien ta question : si la variable est accessible depuis tous les modules de ton projet, tu as forcément accès à sa valeur, non ?

Mais si tu désires conserver cette valeur, même après fermeture de ton fichier, tu dois alors la sauvegarder. La solution la plus simple est de la stocker dans une cellule masquée d'une de tes feuilles, ou mieux encore, dans une feuille masquée pouvant contenir une multitude d'autres valeurs. Tu peux aussi les enregistrer dans un fichier texte séparé, avec une extension ".ini" par exemple, mais là tu compliques un peu la programmation et la gestion de ton classeur car ce fichier doit suivre celui de ton classeur en cas de copie ou déplacement de ce dernier.

Espérant avoir pu t'aider.

Cordialement.
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?


Si je comprend bien, en fait si; dans un livre j'ai:
"L'option STATIC indique que les variables de la procédure SUB conservent leurs valeurs entre les différents appels de la procédure."
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

@ Angus,

Je ne comprends pas bien ta question : si la variable est accessible depuis tous les modules de ton projet, tu as forcément accès à sa valeur, non ?

Effectivement, je pensais avoir eu le problème suivant:
La variable n'est pas étrangère car elle est lu sans problème, mais sa valeur est "empty".

Maintenant en reessayant sans "STATIC" çà marche aussi...

Le fait fait est qu'en réinitialisant la procédure, j'ai oublier de recalculé la variable dans la première étape...

Maintenant je ne comprend plus a quoi sert "Static"....
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Bonjour, Angus, le fil

Sur ce principe, toutes les questions que je me pose ont leur réponse dans le menu d'aide ou sur google, non?
Pratiquement, oui, mais si c'est trop fatigant, tu peux poster sur ce forum.

Staple1600 ne connait pas le niveau de tes connaissances, et il t'indique dans sa réponse la manière la plus simple de résoudre les problèmes les plus courants, selon le principe bien connu qu'il vaut mieux t'apprendre à pêcher que te donner un poisson.

C'est aussi ça l'entre-aide.🙂
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

il y a:
L'option STATIC indique que les variables de la procédure SUB conservent leurs valeurs entre les différents appels de la procédure.

et ensuite:

Est ce que cela veux dire que par exemple dans une procédure tel que:

X=range("A1") + 1

avec A1=1,

X vaudra toujours 2, appel après appel de la procédure?
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Bonjour Victor21,


J'entends bien, mais mon menu d'aide est en anglais, et malgrès un bon niveau, je ne connais pas le mot "portée", alors je peux aussi chercher la traduction, mais dans ce cas le forum ne vaux que pour des question top niveau.

L'impression donnée par Staple1600, c'est que çà le fatigue de répondre, mais je ne l'y oblige pas. Sans parler du ton, genre trop feignant pour faire alt+F11 et ensuite F1...
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?

Bonjour à tous

un exemple ci-dessous à utiliser dans un module standard, tant que tu n'as pas fermé ton classeur ou réinitialisé via l'éditeur vba ta variable s'incrémentera...
Code:
Option Explicit
Sub test()
Static x As Double
x = x + 1
MsgBox x
End Sub

bon après miodi
@+
 
Re : Comment étendre la portée de la valeur d'une variable à tout un module?


Mais en fait il s'agit d'affecter l'option à la procédure comme suit: static Sub test()
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…