Bonjour,
J'aimerai savoir comment faire pour déclarer une fonction avec plusieurs paramètres de sorties.
Et comment récupérer ces paramètres?
Merci d'avance
Bonjour,
J'aimerai savoir comment faire pour déclarer une fonction avec plusieurs paramètres de sorties.
Et comment récupérer ces paramètres?
Merci d'avance
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 Function unefonction() As Variant Dim unTableau(4) As Variant Dim unInteger As Integer Dim unLong As Long Dim uneCollection As Collection Dim unString As String unInteger = 1 unLong = 2000000 Set uneCollection = New Collection unString = "Bonjour" ' Version longue --------- Set unTableau(0) = uneCollection unTableau(1) = unLong unTableau(2) = unInteger unTableau(3) = unString unefonction = unTableau ' Version longue --------- ' Ou on évite l'emploi de unTableau par la version courte... ' Version courte --------- unefonction = Array(uneCollection, unLong, unInteger, unString) ' Version courte --------- End Function Sub tester() Dim unTableau As Variant unTableau = unefonction() MsgBox unTableau(0).Count MsgBox unTableau(1) MsgBox unTableau(2) MsgBox unTableau(3) MsgBox unefonction()(1) End Sub
Bonjour tonio, singular
Tes intéressé, j'aimerai savoir si on peut utiliser une telle fonction directement dans une feuille
si oui, la syntaxe à utiliser STP
Merci
Cordialement
l'exemple qui t'a été donné renvoie un tableau
sous excel index(fonction(param entrée),1,1) devrait te renvoyer la première valeur
et ainsi de suite
re: Bonjour Random
j'ai un #Valeur qui apparait, je ne sais pas d'ou ca vient, je joins le fichier, je ne pense pas avoir mal utilisé les lignes de Singular, mais quand on s'abrutit sur un sujet, on passe souvent devant une grosse betise
Alors qu'un oeuil neuf la voit de suite
Merci à vous
Cordialement
Pour qu'une fonction puisse être utilisée comme ça dans une feuille, elle ne doit jamais renvoyer un objet tel que Collection. Et comme il s'agit d'une fonction matricielle, tu dois peser sur CTRL+MAJ+ENTRÉE quand tu l'enregistre dans la cellule; des accolades se mettront automatiquement autour (courtoisie de Excel) pour indiquer que c'est une matricielle.
Bonjour et merci pour la réponse.
J'ai utilisé le programme que vous m'avez proposé et hier il fonctionnait.
Mais aujourd'hui, j'essaie de le faire tourner à nouveau et j'ai un message qui apparait lorsque je lance la macro "Erreur de compilation : impossible d'affecter à un tableau" alors que j'ai déclaré la fonction As Variant.
Je joins le programme.
Pouvez vous me dire ce qui empêche le programme de tourner??
Merci d'avance
re:
j'avais deja essayé en formule matricielle, mais j'avais toujours le meme resultat, M'enfin ce n'est pas tres grave...........
Merci de t'etre penché sur la question
Cordialement
Pour affecter un tableau à un Variant, ce dernier ne dois pas être défini comme un tableau. La déclaration doit être:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim unTableau As Variant
tu pourrais essayer ceci
côté visual basic
on peut tester dans la fenêtre éxécution print testpuiss(3)(3)
côté excel sans formule matricielle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Function testpuiss(x As Double) As Variant Dim tempo(1 To 3) As Double Dim vartemp As Variant tempo(1) = x * x tempo(2) = tempo(1) * x tempo(3) = tempo(2) * x testpuiss = tempo End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 =INDEX(testpuiss(2);1;3)
Re:
Merci random, ca marche maintenant,
mais ce que je craignais c'est passé, la fonction s'est calculée 5 fois, puisque mon tableau retournais 5 valeurs.
Merci à vous et bonne journée
Partager