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

Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
- - Dernière réponse : cs_andrebernard
Messages postés
406
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.
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
43
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jrivet
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
43
0
Merci
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
Commenter la réponse de jrivet
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
0
Merci
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
Commenter la réponse de cs_andrebernard
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
43
0
Merci
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
Commenter la réponse de jrivet
Messages postés
209
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008
0
Merci
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-------------------------------------
Commenter la réponse de GEDDi
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
0
Merci
Merci à tous de votre aide
Commenter la réponse de cs_andrebernard