calvinsd
Messages postés3Date d'inscriptionmardi 16 juin 2009StatutMembreDernière intervention16 juin 2009
-
16 juin 2009 à 11:02
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 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!!!
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
calvinsd
Messages postés3Date d'inscriptionmardi 16 juin 2009StatutMembreDernière intervention16 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?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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.