OVH Cloud OVH Cloud

Comment récupérer une variable dans une macro inférieure

2 réponses
Avatar
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?

D'avance merci,

C. apprenti vbiste.

2 réponses

Avatar
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.
Avatar
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.