[VB] variable globale
Résolu
Chronix
-
Chronix -
Chronix -
A voir également:
- [VB] variable globale
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
2 réponses
Bonjour,
Tu devrais éviter de mettre du code dans ThisWorkbook.
En principe on ne garde que les méthodes se rattachants à Workbook comme Workbook_Open() ou Workbook_BeforeClose() ou encore Workbook_BeforeSave() ... etc.
Il est préférable de créer des modules pour le reste du code.
Tu peux par exemple dans ThisWorkbook avoir
Et dans le module1 :
Si tu déclares une constante, tu ne peux pas changer sa valeur par la suite.
Si tu veux changer la valeur de la variable globale, il faut juste faire ça:
Ensuite, si tu dois utiliser plusieurs feuilles, je te conseille de référencer les feuilles. Tu peux également déclarer des objets "Feuille" :
Il te suffit ensuite de faire référence à l'un des objets lorsque que tu veux la désigner:
Bon courage
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Tu devrais éviter de mettre du code dans ThisWorkbook.
En principe on ne garde que les méthodes se rattachants à Workbook comme Workbook_Open() ou Workbook_BeforeClose() ou encore Workbook_BeforeSave() ... etc.
Il est préférable de créer des modules pour le reste du code.
Tu peux par exemple dans ThisWorkbook avoir
Private Sub Workbook_Open() Module1.LanceJeu End Sub
Et dans le module1 :
Option Explicit Public Sub LanceJeu() InitialiseJeu '..... '..... End Sub Private Sub InitialiseJeu() End Sub 'etc ...
Si tu déclares une constante, tu ne peux pas changer sa valeur par la suite.
Si tu veux changer la valeur de la variable globale, il faut juste faire ça:
Option Explicit Public Couleur1 As Long 'Couleur du Joueur 1 Public Sub LanceJeu() InitialiseJeu '..... '..... End Sub 'etc ...
Ensuite, si tu dois utiliser plusieurs feuilles, je te conseille de référencer les feuilles. Tu peux également déclarer des objets "Feuille" :
Option Explicit Public Couleur1 As Long 'Couleur du Joueur 1 Public xlSheet1 As Worksheet Public xlSheet2 As Worksheet Public Sub LanceJeu() Set xlSheet1 = ThisWorkbook.Worksheets(1) Set xlSheet2 = ThisWorkbook.Worksheets(2) InitialiseJeu '..... '..... End Sub 'etc ...
Il te suffit ensuite de faire référence à l'un des objets lorsque que tu veux la désigner:
Couleur1 = xlSheet1.Range("D2").Interior.Color
Bon courage
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
D'accord j'ai bien respecté tout ce que tu m'as dit... Merci ça marche très bien... mais il n'y a donc pas moyen de déclarer la variable globalement?
En fait on est obligé de définir la variable au début de la sub principale (dans ton exemple lance_le_jeu ()...), c'est bien ça?
Parce qu'en fait j'ai créer pleins de subs différentes qui prennent en compte ces variables globales, et j'aimerai à ne pas à avoir à les redéfinir au début de chaque sub (c'est vrai que dans mon cas il me suffit de les redéfinir au début de la fonction principale)
Mais j'ai une deuxième fonction Reinitialise qui peut etre lancée toute seule, (sans à avoir à passer par lance_le_jeu), pour l'instant j'ai donc redéfini mes variables de couleur dans réinitialise() et lance_le_jeu()... est-ce que c'est bon ou est-ce que c'est trop lourd?
En fait on est obligé de définir la variable au début de la sub principale (dans ton exemple lance_le_jeu ()...), c'est bien ça?
Parce qu'en fait j'ai créer pleins de subs différentes qui prennent en compte ces variables globales, et j'aimerai à ne pas à avoir à les redéfinir au début de chaque sub (c'est vrai que dans mon cas il me suffit de les redéfinir au début de la fonction principale)
Mais j'ai une deuxième fonction Reinitialise qui peut etre lancée toute seule, (sans à avoir à passer par lance_le_jeu), pour l'instant j'ai donc redéfini mes variables de couleur dans réinitialise() et lance_le_jeu()... est-ce que c'est bon ou est-ce que c'est trop lourd?
Tu peux utiliser les variables globales partout dans le module si elles sont déclarées en Private et dans tous les modules si elles sont déclarés en Public. Tu peux les initialiser effectivement dans la sub LancerJeu() ou ailleurs comme InitialiseJeu(). Une fois initialisées, les valeurs des variables globales peuvent être lues partout dans le code.
;o)
;o)