2 sorties dans une fonction??? [Résolu]

calvinsd 3 Messages postés mardi 16 juin 2009Date d'inscription 16 juin 2009 Dernière intervention - 16 juin 2009 à 11:02 - Dernière réponse : bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention
- 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!!!
Afficher la suite 

5 réponses

Répondre au sujet
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 16 juin 2009 à 13:22
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bigfish_le vrai
calvinsd 3 Messages postés mardi 16 juin 2009Date d'inscription 16 juin 2009 Dernière intervention - 16 juin 2009 à 14:55
+3
Utile
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?
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de calvinsd
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 16 juin 2009 à 15:27
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bigfish_le vrai
calvinsd 3 Messages postés mardi 16 juin 2009Date d'inscription 16 juin 2009 Dernière intervention - 16 juin 2009 à 15:30
+3
Utile
Oui désolé! je t'ai dit je suis tout nouveau dans le forum. Merci quand même ça marche nickel!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de calvinsd
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 16 juin 2009 à 18:48
0
Utile
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.
Commenter la réponse de bigfish_le vrai

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.