2 sorties dans une fonction???

Résolu
calvinsd Messages postés 3 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 16 juin 2009 - 16 juin 2009 à 11:02
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 16 juin 2009 à 18:48
Bonjour,

J'aimerais savoir comment avec ma fonction déclarée As Integer je peux avoir en sortie dans excel deux variables. C'est peut être bidon mais vu que je commence avec VB je galère un peu. So please help!!!

5 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 juin 2009 à 13:22
Salut,

connais pas le Vb.net ou VB2005 mais pour ce genre de chose on doit pas etre tres different du VB6

Donc en VB6 je creerai 2 variables puis les passerais en reference à la fonction qui me les retournera modifiées.

Function FduTest(ByRef Variable1 As Integer, ByRef Variable2 As Integer)
    Variable1 = Variable1 + 1
    Variable2 = Variable1 * 2
End Function
Sub Test()
    Dim Variable1 As Integer, Variable2 As Integer
    Variable1 = 1
    FduTest Variable1, Variable2
    MsgBox "variable1=" & Variable1 & vbCrLf & "variable2=" & Variable2
End Sub

A+
3
calvinsd Messages postés 3 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 16 juin 2009
16 juin 2009 à 14:55
Merci pour ta réponse mais ce n'est pas tout à fait ce que je souhaite faire. je m'explique par exemple si j'écrit ma fonction comme suit:

Function Nb_of_cos(Nmax1, Nmax2, ofd, ovd, ofu, ovu, mrep, brep) As Integer

et que dans cette fonction je travaille avec des variables appelées disons variable1 et variable2. Maintenant je ne veux pas que cela sorte dans un MessageBox mais par exemple si je veux que le résultat qu'il trouve au final pour variable1 soit mis dans ma case H4 de excel par exemple et variable2 dans H5. Que doit-je faire?
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 juin 2009 à 15:27
Re,

Ben ?!?... c'est pas du Vb.net ou du VB2005 alors !...  fait gaffe au theme la prochaine fois.
Pour Excel et le VBA le bon theme est ici : Thèmes / [forum-VISUAL-BASIC_1.aspx Visual Basic 6] / [theme-LANGAGES-DERIVES_287.aspx Langages dérivés] / [theme-VBA_244.aspx VBA] /

Function FduTest(ByRef Variable1 As Integer, ByRef Variable2 As Integer)
    Variable1 = Variable1 + 1
    Variable2 = Variable1 * 2
End Function
Sub Test()
    Dim Variable1 As Integer, Variable2 As Integer
    Variable1 = 1
    FduTest Variable1, Variable2
    Range("H4").Value = Variable1
    Range("H5").Value = Variable2
End Sub

A+
3
calvinsd Messages postés 3 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 16 juin 2009
16 juin 2009 à 15:30
Oui désolé! je t'ai dit je suis tout nouveau dans le forum. Merci quand même ça marche nickel!
3

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

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 juin 2009 à 18:48
Re Re,

allez pour te triturer un peu l'esprit essaye ça tu verras cela marche aussi:

Function FduTest(boule As Integer, bil As Integer)
    boule = boule + 1
    bil = boule * 2
End Function
Sub Test()
    Dim Variable1 As Integer, Variable2 As Integer
    Variable1 = 1
    FduTest Variable1, Variable2
    Range("H4").Value = Variable1
    Range("H5").Value = Variable2
End Sub

comme tu peux le voir il y a 2 differences :

1) j'ai enlevé ByRef devant les parametres de la fonction pourtant cela marche.

En fait si tu ne specifis rien VBA considere le parametre passé en ByRef.

2) Le nom des parametres a changé, pourtant variable1 et Variable2 on bien recuperé respectivement les valeurs des parametres boule et bil.

Ici ce qui est important ce n'est pas le contenant mais le contenu. En effet lors de l'appel de la fonction le contenu des variables Variable1 et Variable2 est transmi au parametres boule et bil, la fonction va alors utilisé ces parametres comme des variables. Une fois que la fonction aura terminé elle retransmettra alors le nouveau contenu des parametres aux variables utilisées pour l'appel de la fonction.
0
Rejoignez-nous