IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Variable globale?


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut [VBA-E]Variable globale?
    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?

  2. #2
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut
    salut , tu utilise tes variable ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub PROG1()
    Dim TAVARIABLE as Integer
    ...
    End Sub
    Si oui , cela ne sert à rien de les rendre globale car elle sont simplement utilisé lors de l'appelle de PROG1

    Si par contre , tes PROG font changer la valeur d'une variable , alors dans ce cas tu peux utiliser une VARIABLE GLOBALE

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    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 !

  4. #4
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut
    Pour rendre une variable Globale il te suffit de remplacer lors de ta definition de ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim TAVARIABLE As Integer
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public 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 suivante
    Si ce n'est pas le cas, si tu travail sur une seule Form , alors aucun souci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Ouep ca marche mais j'arrive pas à faire sque je veux

    j'aurais voulu faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    la declaration c'est ok mais apres jme doutais bien qu'il fallait etre dans une procedure pour affecter des valeurs.

    enfin si par exemple je creer une procedure dans la quelle je met que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Test = DateSerial(Year(Now()), Month(Now()), Day(Now()))
    Resultat = NumeroSemaine(Test) - 1
    que je lance à l'ouverture, les variable auront la bonne valeur? lors de cahcune de leur utilisation ? (sachant que je ne les modifie pas)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    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

    en tout cas merci dejà

  7. #7
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut
    et bien tout depend si ton programme tourne en boucle ou pas , dans quel fonction as tu fais la demande
    Test = DateSerial(Year(Now()), Month(Now()), Day(Now()))
    Resultat = NumeroSemaine(Test) - 1
    ???

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    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

  9. #9
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut
    Ok et bien tu vois , j'ai pris pris en compte ce que tu viens de dire , car j'étais ignorant à ce propos ^^

    merci

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Sois rassuré, j'en apprends tous les jours et pas plus tard que ce matin

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Pour l'instant j'ai mis ca (dans ThisWorkBook)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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 )


    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 . Ma solution est acceptable quand meme?

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    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 ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Beuh si cetai résolu !!

    manquait juste quelques précisions !

    Modif : Hm apres vérif, en mettant la declaration dans thisworkbook, ca ne va pas il faut bien déclarer dans un module

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    J'espère qu'ousk a la tête solide !

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Bah je pense qu'il a l'habitude,

    j'espere qu'il juste qu'il sait qu'elle se brisera avant le mur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Problème de module, VBA et variable globale
    Par Kaptin dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/07/2012, 15h40
  2. [VBA-E] Variables globales sur tout un projet
    Par a.dequidt dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/10/2007, 11h48
  3. [VBA-A] Redéclarer un variable global
    Par sabes dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2006, 19h00
  4. [VBA-E] pb variables globales reinitialisées...
    Par borisa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/03/2006, 15h57
  5. variable globale + fenetre de debogage vba
    Par papy_tergnier dans le forum Access
    Réponses: 5
    Dernier message: 08/09/2005, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo