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 : Conserver une variable entre différentes macro [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Par défaut VBA : Conserver une variable entre différentes macro
    Bonjour,


    J'ai une variable ("Variable1") défini dans une macro (MacroSTART) . Cette dernière lance d'autres macros "MAcro1", "macro2" etc...

    Quand la macro1 est en train de s'exécuter, la "variable1" est vide.

    Comment faire pour conserver l'information de la variable entre les macros?

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en fonction du contexte, deux solutions :

    - Tu déclares ta variable en :
    * Public MaVariable as [Type] dans un module Standard, si toutes tes procédures ne sont pas dans le même module
    * Dim MaVariable as [Type] tout en haut du module qui contient l'ensemble de tes macros

    - Tu transmet en argument ta variable au sein des différentes procédures
    exemple avec deux types de passage d'argument :

    * MacroPrincipale utilise une variable déclarée en String ==> on lui affecte la valeur "toto"
    * On y appelle Macro1 et Macro3 qui contiennent chacun un argument String
    * Macro1 appelle elle-même une autre procédure en réutilisant le String "toto"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub MacroPrincipale()
    Dim MaVariable As String
     
    MaVariable = "toto"
    Call Macro1(MaVariable)
    Call Macro3(MaVariable)
     
    End Sub
     
    Sub Macro1(MonTexte As String)
     
    MsgBox MonTexte
    Call Macro2(MonTexte)
     
    End Sub
     
    Sub Macro2(UnTexte As String)
     
    MsgBox "Second message : " & UnTexte
     
    End Sub
     
    Sub Macro3(AutreTexte As String)
     
    MsgBox "Toujours le même texte : " & AutreTexte
     
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Par défaut
    Super, merci!

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

Discussions similaires

  1. [VBA-E] Conserver une variable pour plusieurs modules
    Par pilote301152 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2006, 13h14
  2. [VBA excel] une variable pour 2 classeurs
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/01/2006, 09h42
  3. Formulaire Login/mot de passe - Conserver une variable
    Par GraphiKa dans le forum Access
    Réponses: 3
    Dernier message: 30/09/2005, 15h29
  4. Passer une variable entre deux fenêtres
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/08/2005, 09h52
  5. Partage d'une variable entre les processus fils
    Par Mehdi Feki dans le forum Linux
    Réponses: 7
    Dernier message: 09/01/2005, 13h34

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