Double retour de fonction dans VB.NET

Résolu
moutonjr
Messages postés
65
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
5 juin 2012
- 23 nov. 2007 à 22:26
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
- 24 nov. 2007 à 20:53
Bonjour à tous,
 Voilà le titre résume à peu près la chose, je chercherais à créer une fonction qui puisse renvoyer deux réponses (ici un string et un integer). Jusqu'ici je concaténais les deux dans la fonction puis je les séparais avec Mid() mais ce ne semble pas être du bon travail.
ex: fonction Mafonc(element1 As object, element2 as Object) <retourne string et integer>
est-ce possible??
Merci de votre compréhension, pour plus de précisions... bah c'est un forum ^^

Comme quoi, vraiment rien n'est impossible...

7 réponses

nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
23 nov. 2007 à 22:47
Salut

Et les classes, structures ca existent et c'est fait pour ca

Tu creer une classe avec un entier et une string
et ta fonction retourne la classe.

Pour des exemples
http://www.c2i.fr/code.aspx?IDCode=1069

Bon courage
3
moutonjr
Messages postés
65
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
5 juin 2012

23 nov. 2007 à 22:50
Je me tape la tête sur le mur... je suis stupide. ^^ bien joué nhervagault! et merci!

Comme quoi, vraiment rien n'est impossible...
0
Elxior
Messages postés
56
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
29 août 2010
1
23 nov. 2007 à 22:55
Tu peux aussi retourner un string et avoir un argument Int32 en référence (ByRef).

We can't solve problems by using the same kind of thinking we used when we created them.
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
24 nov. 2007 à 10:11
Pour info, les arguments passés à une fonction peuvent aussi servir à retrouner un résultat, pour peu qu'ils soient passer par référence (ByRef). Il n'est pas forcément necessaire de faire des structures pour cela :

Mafonc(element1 As object, element2 as Object, ByRef Result1 as string, ByRef Result2 as integer)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0

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

Posez votre question
Elxior
Messages postés
56
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
29 août 2010
1
24 nov. 2007 à 19:21
C'est pas exactement ce que je viens de dire ? ...

We can't solve problems by using the same kind of thinking we used when we created them.
0
moutonjr
Messages postés
65
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
5 juin 2012

24 nov. 2007 à 20:26
alors j'ai ma fonction Mafonc(byval element1 as object, byval element2 as object, byref reponse1 as string, byref reponse2 as integer) as ???
et aussi après avoir appelé mafonc, on peut utiliser reponse1 et reponse 2 comme si on les avait déclarées dans la sub? ex :

sub Subex
dim e1 as object, e2 as object   'définis...
dim mastr as string, i as integer
call Mafonc(e1,e2)

mastr = reponse1
i = reponse 2

end sub

Comme quoi, vraiment rien n'est impossible...
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
24 nov. 2007 à 20:53
pour tes paramètres de retour, ils doivent etre déclaré avant l'appel de la fonction puisqu'ils doivent etre passés en paramètres
(dans ton exemple tu peux directement passer les variables que tu utilise) :
dim e1 as object, e2 as object   'définis...
dim mastr as string, i as integer
call Mafonc(e1,e2,mastr,i)
Pour le type de retour de ta fonction, effectivement dans ce cas là soit tu retourne une variable style code d'erreur qui et dis si ta fonction s'est bien passée ou non, soit tu n'as plus rien à retourner, et dans ce cas là ta fonction peut devenir une simple procedure.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0