Bonjour,
Dans mon projet VBA, j’ai 2 formes :
Form1_form et Form2_form
Dans chaque formes, il y a une procédure :
Form1_form.procedure1 et Form2_form.procedure2
Mon but est de faire passer 2 variables de la procédure 1 dans la procédure 2.
Avec 1 variable, ça fonctionne :
[cpp]Sub procedure1()
Dim test as string
test = “abc”
Form2_form.procedure2(test)
end sub[/cpp]
[cpp]Sub procedure2(var1 as string)
msgbox(var1)
end sub[/cpp]
Le problème, est que quand je reprends cet exemple pour 2 variables, ça ne fonctionne plus :
[cpp]Sub procedure1()
Dim test, test1 as string
test = “abc”
test1 = “def”
Form2_form.procedure2(test, test1)
end sub[/cpp]
[cpp]Sub procedure2(var1, var2 as string)
msgbox(var1)
msgbox(var2)
end sub[/cpp]
J’ai tout essayé et franchement, sans succès, est-ce que qqn pourrait m’aider ?!?
essai avec ça :
[fixed]
Sub procedure2(var1 as string, var2 as string)
msgbox(var1)
msgbox(var2)
end sub
[/fixed]
Plusieurs problèmes :
[cpp]
Sub procedure1()
Dim test as string
test = “abc”
Form2_form.procedure2(test)
end sub
[/cpp]
Toujours utiliser Call avant l’appel d’une procédure.
[cpp]
Sub procedure2(var1 as string)
msgbox(var1)
end sub
[/cpp]
Définir la façon dont VB doit gérer le paramèttre :
- ByVal : par valeur (non modifiée), équivaut à la valeur de la variable,
- ByRef : par référence (à modifier), équivaut à l’adresse de la variable.
Tu dois donc mêttre ByVal pour ton cas.
[cpp]
Sub procedure1()
Dim test, test1 as string
test = “abc”
test1 = “def”
Form2_form.procedure2(test, test1)
end sub
[/cpp]
Toujours typer ses variables, ici, test n’est pas une string mais une variant (8 bytes !) du donc faire :
[cpp]
Sub procedure1()
Dim test as string, test1 as string
test = “abc”
test1 = “def”
Call Form2_form.procedure2(test, test1)
end sub
[/cpp]
Tu as pour la procédure2, toujours le problème du ByVal, ByRef (par défaut c’est ByRef !) :
[cpp]
Sub procedure2(ByVal var1 as string, ByVal var2 as string)
msgbox var1
msgbox var2
end sub
[/cpp]
Salut à tous et merci beaucoup pour vos solutions qui fonctionnent à merveille !