Forum Clubic

[RESOLU] Macro - passage de variables dans 2 procédures

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 !