Paramètres et macros excel

Résolu
Signaler
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour à tous!

J'ai un problème tout simple mais je ne trouve pas de solution. J'utilise une macro excel qui fait un certain traitement sur une variable. Ensuite, cette macro fait appel à une seconde macro en lui passant en paramètre cette variable. Ce qu'il me manque c'est la synthaxe exacte du passage de paramètre.
Exemple

Sub macro1
    ....
    ....
    macro2(variable1)
    ...
    ...
end Sub

Sub macro2(variable1)
    ....
    ....
    ....
End Sub

J'ai déjà penser à déclarer ma variable public pour que toutes les macros y aient accès mais, ce n'est pas très propre ...

Merci d'avance!

6 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
C'est quoi le problème ?

Si tu veux faire ca propre :



Public

Sub
macro1()

  
Dim
variable1
As

String

  [...]

  
Call
macro2(variable1)

End

Sub

Public

Sub
macro2(
ByVal
variable1
As

String
)

  [...]

End

Sub





Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
1/
Le ByVal, c'est pour redéfinir la variable "variable1" pour pas changer sa valeur au reteur de la fonction.
Example si tu fait :



Public

Sub
macro1()

  
Dim
variable1
As

String

  variable1 =
"toto"

  
Call
macro2(variable1)

  MsgBox(variable1)

End

Sub

Public

Sub
macro2(
ByVal
variable1
As

String
)

  variable1 = variable1 &
" et retoto"

End

Sub


Le résultat est "toto".

Avec byref :



Public

Sub
macro1()

  
Dim
variable1
As

String

  variable1 =
"toto"

  
Call
macro2(variable1)

  MsgBox(variable1)

End

Sub

Public

Sub
macro2(
ByRef
variable1
As

String
)

  variable1 = variable1 &
" et retoto"

End

Sub


Le résultat est "toto et retoto"

2/
Oui, tu peux renommer,
Tu peux changer son nom et son type comme t'en as envis.



Public

Sub
macro2(
ByVal
petitevariable
As

Integer
)

  [...]
EndSub




Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010

Salut!!

Merci beaucoup, ça marche! Le problème était que je ne connaissait pas la synthaxe exacte pour le passage de paramètre et j'avais des messages d'erreurs... Deux petites précisions:
    1/ à quoi sert "ByVal" ?
    2/ Peut-on renommer différement notre "variable1" dans macro2 ?

Merci encore!
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010

Salut!!

Merci beaucoup, ça marche! Le problème était que je ne connaissait pas la synthaxe exacte pour le passage de paramètre et j'avais des messages d'erreurs... Deux petites précisions:
    1/ à quoi sert "ByVal" ?
    2/ Peut-on renommer différement notre "variable1" dans macro2 ?

Merci encore!
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010

Merci beaucoup! Je crois que c'est très clair maintenant!
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Petite rectification,

tu ne peux pas changer le type. Si tu envoies une String en paramètre, la fonction doit avoir une string comme paramètre, sinon il y aura erreur 13 "Type mismatch" ou "Incompatibilité de type"


Par contre, pour une Function, la valeur de retour est définie
explicitement par la Function. S'il n'y a pas de valeur de retour,
alors ce sera une valeur Variant. Tu peux donc envoyer une String à la
Function et celle-ci peut retourner un résultat quelconque du même type
ou non que le paramètre.


Option Explicit


Public Sub macro1()

    Dim variable1 As String, Retour As Integer

   

    variable1 = "toto"

    Retour = macro2(variable1)

   

    MsgBox Retour

End Sub


Public Function macro2(Var As String) As Integer

    If Var "toto" Then macro2 5

End Function

MPi