[VB] variable globale
Résolu/Fermé
A voir également:
- [VB] variable globale
- Vb cable - Télécharger - Audio & Musique
- Vb - Télécharger - Langages
- Formule excel plage de données variable ✓ - Forum Excel
- Vba msgbox variable ✓ - Forum VB / VBA
- Affecter la valeur d'une cellule à une variable vba ✓ - Forum Bureautique
2 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 25/04/2010 à 13:01
Modifié par Polux31 le 25/04/2010 à 13:01
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?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
25 avril 2010 à 15:50
25 avril 2010 à 15:50
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)