Comment récupérer une variable dans une macro inférieure
2 réponses
cmanquant
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;).
Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain
nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro ()
call macro1
blabla=fonction()
call macro2
call macro 3
end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça
ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du
genre?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Bonjour cmanquant,
Tu peux essayer ceci : Un petit exemple qui ne sert à rien qu'illustrer le principe
Exécute pas à pas la macro 1
Au lieu de passer la variable comme paramètre à chacune des procédures, tu peux aussi déclarer la variable comme Public dans le haut de ton module. Cela dépend de ton environnement !
'------------------- Sub Macro1() Dim Blabla As String
Blabla = MaFonction("Toto") Macro2 Blabla Macro3 Blabla End Sub
'------------------- Sub Macro2(LaChaine As String) Range("A1") = LCase(LaChaine) End Sub '------------------- Sub Macro3(CetteChaine As String) MsgBox Len(CetteChaine) End Sub '------------------ Function MaFonction(UneChaine As String) MaFonction = UCase(UneChaine) End Function '-------------------
Salutations!
"cmanquant" a écrit dans le message de news:
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;). Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro () call macro1 blabla=fonction() call macro2 call macro 3 end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du genre?
D'avance merci,
C. apprenti vbiste.
Bonjour cmanquant,
Tu peux essayer ceci : Un petit exemple qui ne sert à rien qu'illustrer le principe
Exécute pas à pas la macro 1
Au lieu de passer la variable comme paramètre à chacune des procédures, tu peux aussi déclarer la variable comme Public
dans le haut de ton module. Cela dépend de ton environnement !
'-------------------
Sub Macro1()
Dim Blabla As String
Blabla = MaFonction("Toto")
Macro2 Blabla
Macro3 Blabla
End Sub
'-------------------
Sub Macro2(LaChaine As String)
Range("A1") = LCase(LaChaine)
End Sub
'-------------------
Sub Macro3(CetteChaine As String)
MsgBox Len(CetteChaine)
End Sub
'------------------
Function MaFonction(UneChaine As String)
MaFonction = UCase(UneChaine)
End Function
'-------------------
Salutations!
"cmanquant" <cmanquant@discussions.microsoft.com> a écrit dans le message de news:
81F5E282-BFAD-4E1B-94E3-6534EAE1AE1C@microsoft.com...
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;).
Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain
nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro ()
call macro1
blabla=fonction()
call macro2
call macro 3
end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça
ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du
genre?
Tu peux essayer ceci : Un petit exemple qui ne sert à rien qu'illustrer le principe
Exécute pas à pas la macro 1
Au lieu de passer la variable comme paramètre à chacune des procédures, tu peux aussi déclarer la variable comme Public dans le haut de ton module. Cela dépend de ton environnement !
'------------------- Sub Macro1() Dim Blabla As String
Blabla = MaFonction("Toto") Macro2 Blabla Macro3 Blabla End Sub
'------------------- Sub Macro2(LaChaine As String) Range("A1") = LCase(LaChaine) End Sub '------------------- Sub Macro3(CetteChaine As String) MsgBox Len(CetteChaine) End Sub '------------------ Function MaFonction(UneChaine As String) MaFonction = UCase(UneChaine) End Function '-------------------
Salutations!
"cmanquant" a écrit dans le message de news:
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;). Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro () call macro1 blabla=fonction() call macro2 call macro 3 end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du genre?
D'avance merci,
C. apprenti vbiste.
cmanquant
Bonjour,
Merci beaucoup MichDenis pour ton aide, je n'ai pas pu répondre hier, je n'arrivais pas à me connecter, mais en tout cas ça m'a aider, beaucoup.
Cordialement,
C.
Bonjour cmanquant,
Tu peux essayer ceci : Un petit exemple qui ne sert à rien qu'illustrer le principe
Exécute pas à pas la macro 1
Au lieu de passer la variable comme paramètre à chacune des procédures, tu peux aussi déclarer la variable comme Public dans le haut de ton module. Cela dépend de ton environnement !
'------------------- Sub Macro1() Dim Blabla As String
Blabla = MaFonction("Toto") Macro2 Blabla Macro3 Blabla End Sub
'------------------- Sub Macro2(LaChaine As String) Range("A1") = LCase(LaChaine) End Sub '------------------- Sub Macro3(CetteChaine As String) MsgBox Len(CetteChaine) End Sub '------------------ Function MaFonction(UneChaine As String) MaFonction = UCase(UneChaine) End Function '-------------------
Salutations!
"cmanquant" a écrit dans le message de news:
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;). Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro () call macro1 blabla=fonction() call macro2 call macro 3 end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du genre?
D'avance merci,
C. apprenti vbiste.
Bonjour,
Merci beaucoup MichDenis pour ton aide, je n'ai pas pu répondre hier, je
n'arrivais pas à me connecter, mais en tout cas ça m'a aider, beaucoup.
Cordialement,
C.
Bonjour cmanquant,
Tu peux essayer ceci : Un petit exemple qui ne sert à rien qu'illustrer le principe
Exécute pas à pas la macro 1
Au lieu de passer la variable comme paramètre à chacune des procédures, tu peux aussi déclarer la variable comme Public
dans le haut de ton module. Cela dépend de ton environnement !
'-------------------
Sub Macro1()
Dim Blabla As String
Blabla = MaFonction("Toto")
Macro2 Blabla
Macro3 Blabla
End Sub
'-------------------
Sub Macro2(LaChaine As String)
Range("A1") = LCase(LaChaine)
End Sub
'-------------------
Sub Macro3(CetteChaine As String)
MsgBox Len(CetteChaine)
End Sub
'------------------
Function MaFonction(UneChaine As String)
MaFonction = UCase(UneChaine)
End Function
'-------------------
Salutations!
"cmanquant" <cmanquant@discussions.microsoft.com> a écrit dans le message de news:
81F5E282-BFAD-4E1B-94E3-6534EAE1AE1C@microsoft.com...
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;).
Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain
nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro ()
call macro1
blabla=fonction()
call macro2
call macro 3
end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça
ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du
genre?
Merci beaucoup MichDenis pour ton aide, je n'ai pas pu répondre hier, je n'arrivais pas à me connecter, mais en tout cas ça m'a aider, beaucoup.
Cordialement,
C.
Bonjour cmanquant,
Tu peux essayer ceci : Un petit exemple qui ne sert à rien qu'illustrer le principe
Exécute pas à pas la macro 1
Au lieu de passer la variable comme paramètre à chacune des procédures, tu peux aussi déclarer la variable comme Public dans le haut de ton module. Cela dépend de ton environnement !
'------------------- Sub Macro1() Dim Blabla As String
Blabla = MaFonction("Toto") Macro2 Blabla Macro3 Blabla End Sub
'------------------- Sub Macro2(LaChaine As String) Range("A1") = LCase(LaChaine) End Sub '------------------- Sub Macro3(CetteChaine As String) MsgBox Len(CetteChaine) End Sub '------------------ Function MaFonction(UneChaine As String) MaFonction = UCase(UneChaine) End Function '-------------------
Salutations!
"cmanquant" a écrit dans le message de news:
Bonjour,
Je débute en vba mais j'ai déjà programmé un peu à droite à gauche ;). Mon problème est le suivant : j'ai une macro mainMacro qui apelle un certain nombre d'autres macros et une fonction.
Ca ressemble à ça :
sub mainMacro () call macro1 blabla=fonction() call macro2 call macro 3 end Sub
Mon but est d'utiliser blabla dans macro 2 et macro 3 hors actuellement ça ne fonctionne pas. Faut il rajouter des global, public ou quelque chose du genre?