Retour dans la variable d'une fonction [Résolu]

Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
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
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
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
Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

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-------------------------------------
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Merci à tous de votre aide