coucou,
j'tuilise une variable 5 ou 6 fois dans différentes Sub et je me demandais si on ne pouvait pas ne la déclarer qu'une fois?
Version imprimable
coucou,
j'tuilise une variable 5 ou 6 fois dans différentes Sub et je me demandais si on ne pouvait pas ne la déclarer qu'une fois?
salut , tu utilise tes variable ainsi :
Si oui , cela ne sert à rien de les rendre globale car elle sont simplement utilisé lors de l'appelle de PROG1Code:
1
2
3
4 sub PROG1() Dim TAVARIABLE as Integer ... End Sub
Si par contre , tes PROG font changer la valeur d'une variable , alors dans ce cas tu peux utiliser une VARIABLE GLOBALE
Alors,
oui je les utilise comme dans ton exemple et non mes prog ne moidifie pas la valeur de cette variable. Mais je voudrais la render globale quand meme.
Voilà la situation :
j'ai une fonction qui calcul le numéro de la semaine en cours et donc pour ne pas avoir à calculer ce N° dans chaque Sub, je voudrais par exemple déclarer en global :
- une variable qui contient la date du jour (c'est un parametre de la fonction qui me calcule le numero de la semaine en cours)
- une variable "NumSemaine" qui contient le résultat de la fonction.
donc pour l'instant je declare les variable comme ton exemple elle ne sont pas modifié mais pourtant je trouve qu'il serait interessant de les declarer en global pour ne pas avoir à appeler la fonction plusieurs fois ! 8O
Pour rendre une variable Globale il te suffit de remplacer lors de ta definition de ta variable
parCode:Dim TAVARIABLE As Integer
Si tu as definit cette TAVARIABLE sur une Form1 et que tu souhaite l'utilisée sur une autre Form2 , sache qu'il faut y faire appelle de la maniére suivanteCode:Public TAVARIABLE As Integer
Si ce n'est pas le cas, si tu travail sur une seule Form , alors aucun souciCode:Form1.TAVARIABLE
Ouep ca marche mais j'arrive pas à faire sque je veux :?
j'aurais voulu faire ca :
la declaration c'est ok mais apres jme doutais bien qu'il fallait etre dans une procedure pour affecter des valeurs.Code:
1
2
3
4
5 Public Test As Date Public Resultat As Integer Test = DateSerial(Year(Now()), Month(Now()), Day(Now())) Resultat = NumeroSemaine(Test) - 1
enfin si par exemple je creer une procedure dans la quelle je met que :
que je lance à l'ouverture, les variable auront la bonne valeur? lors de cahcune de leur utilisation ? (sachant que je ne les modifie pas)Code:
1
2
3 Test = DateSerial(Year(Now()), Month(Now()), Day(Now())) Resultat = NumeroSemaine(Test) - 1
Bon,
pour le moment je fais comme ca j'initialise dans thisworkbook, si y'a une meilleure solution ou si ma solution peut presenter des erreur ca m'interesse de le savoir :D
en tout cas merci dejà ;)
et bien tout depend si ton programme tourne en boucle ou pas , dans quel fonction as tu fais la demande
???Citation:
Test = DateSerial(Year(Now()), Month(Now()), Day(Now()))
Resultat = NumeroSemaine(Test) - 1
Je complète juste c que t'a mis Lucas
Pour qu'une variable soit vraiment Globale, place-la dans le module qui ouvre ta form.
L'avantage étant que si tu l'utilises dans des procédures placées dans le module, non dans la form, la variable reste accessible. Tu peux avoir intérêt à faire cela si, depuis plusieurs forms tu veux lancer une procédure identique se trouvant dans le module.
A toutes fins utiles ;)
Ok et bien tu vois , j'ai pris pris en compte ce que tu viens de dire , car j'étais ignorant à ce propos ^^
merci
Sois rassuré, j'en apprends tous les jours et pas plus tard que ce matin ;)
Pour l'instant j'ai mis ca (dans ThisWorkBook)
et tout va bien, enfin j'ai pas mal de code (et j'ai aps appelé les variable globale pareil partout alors le temps de remplacer :roll: )Code:
1
2
3
4
5
6
7
8
9 Public DateAjd As Date Public NumeroFichier As Integer Private Sub Workbook_open() 'Initialisation des variables globales DateAjd = DateSerial(Year(Now()), Month(Now()), Day(Now())) NumeroSemaineDerniere = NumeroSemaine(DateAjd) - 1 End Sub
Ps : oula chui à la traine moi, jetais resté sur la redac du emssage un moment sans voir les reponse qu'il y a eu entre temps...
je comprend aps bien pourquoi tu me parle de form? les Sub sont dans des modules :roll: . Ma solution est acceptable quand meme? :P
C'est le cas de figure que je décrivais. Placées dans le module, là tes variables sont vraiment globales. ;)
Pourquoi que t'as mis résolu si c'était pas résolu ? :lol:
Beuh si cetai résolu !!
manquait juste quelques précisions ! :lol:
Modif : Hm apres vérif, en mettant la declaration dans thisworkbook, ca ne va pas il faut bien déclarer dans un module 8O
J'espère qu'ousk a la tête solide !
Bah je pense qu'il a l'habitude,
j'espere qu'il juste qu'il sait qu'elle se brisera avant le mur :lol: