XL 2016 Déclaration Variable globale

  • Initiateur de la discussion Initiateur de la discussion KTM
  • 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 !

KTM

XLDnaute Impliqué
Bonjour Chers tous
Je voudrais savoir ou et comment définir mes variables (Sinon les constantes) à utiliser dans toute la procédure VBA de mon fichier.
Merci et Bonne journée..
 
Bonjour.
En tête du module, instruction Private pour qu'elle soient connues seulement dans toutes les procédures du seul module où elles sont déclarées, Public pour qu'elles soient connue aussi bien dans tous les modules du projet que dans les projets différents qui l'auraient cochés dans leurs références.
À noter que dans un module de classe, Public en fait un membre (méthode ou propriété) obligeant, pour l'utiliser à l'extérieur, à le préfixer d'un exemplaire de l'objet.
 
Dernière édition:
Bonjour KTM, Dranreb,
Les variables globales ou publique se déclarent avant le SUB, les variables locales après le SUB :
VB:
Public MaVariable As Integer                ' Déclaration Variable globale
Public Const MaConstante As Integer = 34    ' Déclaration Constante globale
Sub MaMacro()
Dim MaVariableLocale                        ' Déclaration Variable globale
Const MaConstantelocale As Integer = 10     ' Déclaration Constante globale

' Programme
'...
End Sub
Les variables globales sont visibles par tous les modules du fichier , et resteront mémorisés jusqu'à la fermeture du fichier.
Les variables locales ne sont visibles que par le module où elles sont déclarées.
 
Dernière édition:
Re,
Tout dépend du contexte.
Si les macros Main et Routine sont associées à des boutons par ex, Main initialise "v", mais l'appel à Routine ne connaitra pas la valeur de "v".
Je suis d'accord mais c'est juste une organisation.

Je proscris autant faire ce peux les variables public.

Si notre ami opte pour des variables public je l'invite à renommer la propriété du module pour lui donner un Nom significatif pour retrouver ses variables et ne pas les mélanger avec les méthodes qui les utilisent .
 
Ce que je signalai à propos des modules de classe s'applique en fait aussi à tous les modules objets, ThisWorkbook, Worksheet et UserForm.
Les éléments y étant déclarés Public en deviennent membres et ne sont accessibles de l'extérieur qu'en les qualifiant d'une expression représentant l'objet.
 
Ce que je signalai à propos des modules de classe s'applique en fait aussi à tous les modules objets, ThisWorkbook, Worksheet et UserForm.
Les éléments y étant déclarés Public en deviennent membres et ne sont accessibles de l'extérieur qu'en les qualifiant d'une expression représentant l'objet.
Effectivement il faut décliner les propriétés et méthodes déclaré en public
VB:
ThisWorkbook.MaVariablePublic
 
Bonjour
sans oublier les variables type qui peuvent nous permettre de classifier nos variable voir créer des contexte
VB:
Public Type mesvariables
    
    variable1 As Long
    
    variable2 As String
    
    variable3 As Double
    
End Type


Public mesvar As mesvariables  'declaration globale module(dans le module seulement)

'A noter que mesvar peut être un tableau de type

'histoire de corser le tout je crée une variable de même nom  en dehors du type
Public variable2

'exemple sub dans le module1
Sub creationContenu()
    mesvar.variable1 = 10
    mesvar.variable2 = "toto"
    mesvar.variable3 = 10.5
    variable2 = "titi"
End Sub

'exemple sub dans le module2
'on peut donc lire le contenu de mesvar qui ont été inscrite dans le module1
Sub lectureContenu()
    MsgBox mesvar.variable2 & " a acheté " & mesvar.variable1 & " bannanes  pour " & mesvar.variable3 & " euros"
End Sub

'exemple sub dans le module3
'les donnée peuvent être inscrites dans la même sub
Sub creationAndlectureContenu2()
    mesvar.variable1 = 10
    mesvar.variable2 = "robert"
    mesvar.variable3 = 2.5
    MsgBox mesvar.variable2 & " a courru " & mesvar.variable1 & " en " & mesvar.variable3 & " heures"
End Sub

Sub lectureContenu3()
    MsgBox mesvar.variable2 & " et " & variable2 & " on  marché " & mesvar.variable1 & " kilomètres en " & mesvar.variable3 & " heures"
End Sub

lancez d'abords la sub creationcontenu
Attention au piege des variable public
nous avons tous notre style et pour certains certains réflexes ,on a souvent l'habitude de nommer nos variables d'une certaine façon
il arrive que l'on fasse des doublons
le type est bien pour ça car on peut avoir deux variable de même nom (une module) et (une dans le type )
je vous l'accorde c'est extrême et vertigineux mais ça reste une possibilité
j'en montre un exemple d'ailleurs dans ce cette petite esquisse ci dessus
patrick
 
- 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

Réponses
33
Affichages
840
Réponses
18
Affichages
843
Retour