Paramètres et macros excel

Résolu
lolo38550 Messages postés 30 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 12 janvier 2010 - 9 août 2006 à 10:52
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 18 août 2006 à 22:48
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

Utilisateur anonyme
9 août 2006 à 10:59
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
3
Utilisateur anonyme
9 août 2006 à 11:17
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
3
lolo38550 Messages postés 30 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 12 janvier 2010
9 août 2006 à 11:09
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!
0
lolo38550 Messages postés 30 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 12 janvier 2010
9 août 2006 à 11:09
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lolo38550 Messages postés 30 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 12 janvier 2010
9 août 2006 à 11:37
Merci beaucoup! Je crois que c'est très clair maintenant!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 août 2006 à 22:48
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
0
Rejoignez-nous