Retour dans la variable d'une fonction

Résolu
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 8 oct. 2007 à 14:59
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 8 oct. 2007 à 17:49
Bonjour à tous

Je voudrais savoir si il est possible de faire un retour dans la variable d'une fonction par une autre fonction.

Je m'explique :

J'ai deux forms :

Dans la Form1, j'ai une sub dans laquelle j'appelle une fonction qui est dans la Form2
Quand je clic sur le bouton qui est sur la form2, j'aimerais qu'une valeur remonte par la fonction.
Seulement le probleme c'est que je suis dans la sub "Bouton_click"

Je sais la question n'est pas claire, je m'y perd moi-meme

Dans la FORM1

Private Sub Form_Load()
 Dim x As String
 x = Form2.essai("essai")
 MsgBox x
End Sub

Dans la FORM2

Private Sub Command1_Click()
 ?????????????????? = "Coucou"
 Unload Me
End Sub



Public Function essai(variable)
 Me.Show 1
End Function


Que faudrait il mettre à la place des

???????????????
pour
que "coucou" remonte dans X et s'inscrive dans le MessageBox ?
Car si je met essai = "Coucou" ou essai "coucou" ça plante dans les 2 cas.(Normal puisque ça rappelle la fonction "Essai" et moi je voudrais juste ecrire dans le retour.)
Suis-je obligé de mettre une variable en global du style

Dans un module

Public x As String

Dans la FORM1

Private Sub Form_Load()
 Form2.essai "essai"
 MsgBox x
End Sub

Dans la FORM2

Private Sub Command1_Click()
 X = "Coucou"
 Unload Me
End Sub



Public sub essai(variable)
 Me.Show 1
End Sub


Mais j'aurais préféré une methode plus élégante et remonter la valeur par la fonction

Merci et bonne journée.

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 oct. 2007 à 15:42
Salut,
Ou bien encore et je crois que cela répond mieux à ta question.

'FORM1
Private Sub Form_Load()
   Call MsgBox(Form2.TestRetour("essai"))
End Sub<hr />
'FORM2
Private X As String

Private Sub Command1_Click()
X = "CA MARCHE"
Unload Me
End Sub<hr />
Public Function TestRetour(ByVal TmpString As String) As String
  Call MsgBox(TmpString)
  Call Me.Show(vbModal)
  TestRetour = X
End Function , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 oct. 2007 à 15:35
Salut,

Si tu veux faire retourne une String a une Fonction tu peux essayer ceci.

'FORM1
Private Sub Form_Load()
Call MsgBox(Form2.TestRetour("essai"))
End Sub<hr />
'FORM2
Public Function TestRetour(ByVal TmpString As String) As String
   TestRetour = "CA MARCHE"
   Call MsgBox(TmpString)
   Call Me.Show(vbModal)
End Function<hr />, ----
[code.aspx?ID=41455 By Renfield]

Si ce n'est pas du tout ce que tu souhaites faire, soit plus précis.
@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
8 oct. 2007 à 16:33
Merci JRIVET.
Donc si j'ai bien compris, tu met la variable en public, mais seulement pour la form2 afin qu'elle puisse passer d'une procedure à l'autre.

Mais le fait de les appeller par CALL ne change pas grand chose si ???
Ce serait équivalent à ça, pour que je comprenne ??

'FORM1
Private Sub Form_Load()
 X = Form2.TestRetour("essai")
 MsgBox X
End Sub

'FORM2
Private X As String



Private Sub Command1_Click()
 X = "CA MARCHE"
 Unload Me
End Sub



Public Function TestRetour(ByVal TmpString As String) As String
 Me.Show 1
 TestRetour = X
End Function
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 oct. 2007 à 17:02
Oui,
Le call n'apporte rien mais c'est juste une "règle" que je m'impose voila tout. (une règle sans raison apparente d'ailleurs si ce n'est que je préfère voir Call)

@+: Ju£i?n
Pensez: Réponse acceptée
0

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

Posez votre question
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
8 oct. 2007 à 17:18
Le 'Call' est historique !
C'est un héritage fonctionnel et conceptuel  de QBasic qui ne pouvait pas appeler directement une fonction sans mettre un 'sujet' devant le 'verbe'.Call Truc() ( sujet Call + verbe Truc() )

Gerome GUILLEMIN ( auteur du langage FBSL ( qui supporte par héritage le Call aussi ^^ ) )
http://www.fbsl.net-------------------------------------
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
8 oct. 2007 à 17:49
Merci à tous de votre aide
0
Rejoignez-nous