Bonjour à tous,
Sur la FAQ, j'ai trouvé des fonction renvoyant un résultat. Est ce que quelqu'un pourrait me dire comment faire pour réaliser :
- Une fonction qui renvoie 2 résultats.
- Une fonction qui renvoie un tableau .
Merci d'avance.
Bonjour à tous,
Sur la FAQ, j'ai trouvé des fonction renvoyant un résultat. Est ce que quelqu'un pourrait me dire comment faire pour réaliser :
- Une fonction qui renvoie 2 résultats.
- Une fonction qui renvoie un tableau .
Merci d'avance.
pour une fonction qui renvoi deux resultat j'sais pas trop mais tu peut bidouiller une ou deux variables globales qui te affecte lors de ta fonction que tu recupere ensuite dans ton code !!!
mais si quelqu'un connai j'suis preneur
À vaincre sans péril, on triomphe sans gloire
(Corneille)
tu peux aussi créer un type résultat avec deux (ou x) propriétés
et utilisé ce type en retour de fonction
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
(Albert Einstein)
ben fait une fonction qui retourne un array ???
resultat[0]
resultat[1]
return resultat;
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Il y a différents moyens pour faire retourner deux résultats à une fonction :
* Retourner un tableau de longueur 2
* Retourner un type utilisateur
* Passer les resultats en paramètre et préciser ByRef aux params résultats
Il existe un topic dédié à ce sujet : Pourquoi une seule valeur de retour pour les fonctions ?
si on part de cette exemple, je voudrai que la fonction test me renvoie les resultats a et b.
Public Function test()
a = "test"
b = "essai"
End Function
selon les trois propositions de CB:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public Function test() as variant redim preserve test(2) test(0) = "test" test(1) = "essai" end function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Public Function test() as variant dim mytab(2) mytab(0) = "test" mytab(1) = "essai" test=mytab end function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Function test(byref a as string, byref b as string) a="test" b="essai" end function
je suis pas sur pour le premier ...
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Voici un jeu de test pour comparer les méthodes :
A choisir, je préfère la première méthode...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Private Type DeuxResultats Resultat_1 As String Resultat_2 As String End Type Public Sub TestDeuxResultat() Dim MesDeuxResultats_A As DeuxResultats Dim MesDeuxResultats_B As Variant Dim MesDeuxResultats_C_1 As String Dim MesDeuxResultats_C_2 As String MesDeuxResultats_A = DeuxResultats_A() MesDeuxResultats_B = DeuxResultats_B() DeuxResultats_C MesDeuxResultats_C_1, MesDeuxResultats_C_2 MsgBox "Méthode A" & vbCrLf & _ "Resultat 1 : " & MesDeuxResultats_A.Resultat_1 & vbCrLf & _ "Résultat 2 : " & MesDeuxResultats_A.Resultat_2 & vbCrLf & vbCrLf & _ "Méthode B" & vbCrLf & _ "Resultat 1 : " & MesDeuxResultats_B(0) & vbCrLf & _ "Résultat 2 : " & MesDeuxResultats_B(1) & vbCrLf & vbCrLf & _ "Méthode C" & vbCrLf & _ "Resultat 1 : " & MesDeuxResultats_C_1 & vbCrLf & _ "Résultat 2 : " & MesDeuxResultats_C_2 End Sub Public Function DeuxResultats_A() As DeuxResultats DeuxResultats_A.Resultat_1 = "test de la méthode A" DeuxResultats_A.Resultat_2 = "essai de la méthode A" End Function Public Function DeuxResultats_B() As Variant Dim Tableau(1) As String Tableau(0) = "test de la méthode B" Tableau(1) = "essai de la méthode B" DeuxResultats_B = Tableau End Function Public Sub DeuxResultats_C(ByRef R1 As String, ByRef R2 As String) R1 = "test de la méthode C" R2 = "essai de la méthode C" End Sub
A ce niveau, ne serait-il pas temps de passer aux collections d'objets???
Peux tu préciser ton idée? S'agit-il de faire une fonction qui renvoie une collection? Dans ce cas je ne voie pas en quoi c'est plus simple, ca revient à renvoyer un tableau. Sauf que l'implentation n'est pas la même...Envoyé par Babyneedle
Personnellement je préfère la solution qui utilise la notion de type utilisateur. Au moins on peut attribuer un nom aux variables manipulées.
Un exemple d'utilisation, est une fonction qui renvoie les coordonnées du point d'intersection de deux droites. Dans ce cas le type est :
Si tu as une solution plus élégante et qui utilise une collection d'objets je suis preneur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Type Coordonnees Abs As Integer Coord As Integer End Type
Comme il a été mentionné précedemment une fonction renvoit toujours UN élément à moins d'utiliser un tableau ou bien un variant.Peux tu préciser ton idée? S'agit-il de faire une fonction qui renvoie une collection? Dans ce cas je ne voie pas en quoi c'est plus simple, ca revient à renvoyer un tableau. Sauf que l'implentation n'est pas la même...
Vouloir retourner plusieurs éléments c'est un peu du travail de , pardonnez-moi , de "cochon" .
D'ailleurs pourquoi vouloir que la fonction retourne-t-elle plusieurs éléments ?
Il suffit de passer les éléments qui doivent être affectés en argument à la fonction !!
Pourquoi les collections ou structures ( avec mot -clé "type" ) passées en argument à une fonction ?
Parce que c'est un codage plus propre et cela réflete une meilleure organisation et structuration du projet.
En général , on passe pas plus de 4 arguments à une fonction sinon on passe une structure ou bien une instance de collection.
Pour ce qui est des fonctions qui retournent une valeur , on utilise ce méchanisme algorithmique pour par exemple retourner un booléen pour s'assurer qu'un traitement soit bien effectué.
Ou bien pour le résultat d'un calcul , pour calculer une valeur TTC en fonction d'un taux de TVA et montant HT.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager