Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment créer une fonction permettant d'afficher plusieurs résul ta

5 réponses
Avatar
yac
Dans Excel 2003.

Quel code VBA utiliser pour qu'une "function" donne 2 résultats ou plus, tel
que la résolution d'une équation du second degré, par exempl.

5 réponses

Avatar
Ange Ounis
Tu dois créer une fonction qui renvoie un résultat de type Variant sous forme
d'un tableau. Pour l'utiliser dans Excel, tu la valides comme une formule
matricielle (Ctrl+Maj+Entrée).
Exemple :

''''dans un module ordinaire
Function Bidon(Param)
Dim Arr(1) 'tableau "relais"
Arr(0) = Param + 1000
Arr(1) = Param * 1000
Bidon = Arr
End Function

''''dans Excel, sélectionne A1:B1 puis dans A1 :
=Bidon(15)
et valide par Ctrl+Maj+Entrée.

----------
Ange Ounis
----------

Dans Excel 2003.

Quel code VBA utiliser pour qu'une "function" donne 2 résultats ou plus, tel
que la résolution d'une équation du second degré, par exempl.


Avatar
yac
Merci, mais j'ai fais un essai avec 3 résultats:

Public Function CVE(ByRef Var1)
Dim CV_1(2) As Variant
CV_1(0) = WorksheetFunction.Average(Var1)
CV_1(1) = WorksheetFunction.StDev(Var1)
CV_1(2) = WorksheetFunction.StDev(Var1) / WorksheetFunction.Average(Var1) *
100
CVE = CV_1
End Function

Le résultat me donne 3 fois CV_1(0).

Ai-je oublié quelque chose ?


Tu dois créer une fonction qui renvoie un résultat de type Variant sous forme
d'un tableau. Pour l'utiliser dans Excel, tu la valides comme une formule
matricielle (Ctrl+Maj+Entrée).
Exemple :

''''dans un module ordinaire
Function Bidon(Param)
Dim Arr(1) 'tableau "relais"
Arr(0) = Param + 1000
Arr(1) = Param * 1000
Bidon = Arr
End Function

''''dans Excel, sélectionne A1:B1 puis dans A1 :
=Bidon(15)
et valide par Ctrl+Maj+Entrée.

----------
Ange Ounis
----------

Dans Excel 2003.

Quel code VBA utiliser pour qu'une "function" donne 2 résultats ou plus, tel
que la résolution d'une équation du second degré, par exempl.





Avatar
Ange Ounis
Pas de problème chez moi, ta fonction donne les résultats attendus..
Tu sélectionnes bien A1:C1 (par exemple) pour entrer ensuite en A1 qqchose comme :

=CVE(A10:A50)

?

----------
Ange Ounis
----------

Merci, mais j'ai fais un essai avec 3 résultats:

Public Function CVE(ByRef Var1)
Dim CV_1(2) As Variant
CV_1(0) = WorksheetFunction.Average(Var1)
CV_1(1) = WorksheetFunction.StDev(Var1)
CV_1(2) = WorksheetFunction.StDev(Var1) / WorksheetFunction.Average(Var1) *
100
CVE = CV_1
End Function

Le résultat me donne 3 fois CV_1(0).

Ai-je oublié quelque chose ?


Tu dois créer une fonction qui renvoie un résultat de type Variant sous forme
d'un tableau. Pour l'utiliser dans Excel, tu la valides comme une formule
matricielle (Ctrl+Maj+Entrée).
Exemple :

''''dans un module ordinaire
Function Bidon(Param)
Dim Arr(1) 'tableau "relais"
Arr(0) = Param + 1000
Arr(1) = Param * 1000
Bidon = Arr
End Function

''''dans Excel, sélectionne A1:B1 puis dans A1 :
=Bidon(15)
et valide par Ctrl+Maj+Entrée.

----------
Ange Ounis
----------

Dans Excel 2003.

Quel code VBA utiliser pour qu'une "function" donne 2 résultats ou plus, tel
que la résolution d'une équation du second degré, par exempl.






Avatar
yac
Merci beaucoup.

L'erreur provenait que je voulais avoir les résultats en colonne donc je
selectionnais
A12:A14.

Es-ce possible dans ce sens?

Bonne soirée


Pas de problème chez moi, ta fonction donne les résultats attendus..
Tu sélectionnes bien A1:C1 (par exemple) pour entrer ensuite en A1 qqchose comme :

=CVE(A10:A50)

?

----------
Ange Ounis
----------

Merci, mais j'ai fais un essai avec 3 résultats:

Public Function CVE(ByRef Var1)
Dim CV_1(2) As Variant
CV_1(0) = WorksheetFunction.Average(Var1)
CV_1(1) = WorksheetFunction.StDev(Var1)
CV_1(2) = WorksheetFunction.StDev(Var1) / WorksheetFunction.Average(Var1) *
100
CVE = CV_1
End Function

Le résultat me donne 3 fois CV_1(0).

Ai-je oublié quelque chose ?


Tu dois créer une fonction qui renvoie un résultat de type Variant sous forme
d'un tableau. Pour l'utiliser dans Excel, tu la valides comme une formule
matricielle (Ctrl+Maj+Entrée).
Exemple :

''''dans un module ordinaire
Function Bidon(Param)
Dim Arr(1) 'tableau "relais"
Arr(0) = Param + 1000
Arr(1) = Param * 1000
Bidon = Arr
End Function

''''dans Excel, sélectionne A1:B1 puis dans A1 :
=Bidon(15)
et valide par Ctrl+Maj+Entrée.

----------
Ange Ounis
----------

Dans Excel 2003.

Quel code VBA utiliser pour qu'une "function" donne 2 résultats ou plus, tel
que la résolution d'une équation du second degré, par exempl.









Avatar
Ange Ounis
Oui :

Public Function CVE(ByRef Var1)
Dim CV_1(2) As Variant
CV_1(0) = WorksheetFunction.Average(Var1)
CV_1(1) = WorksheetFunction.StDev(Var1)
CV_1(2) = WorksheetFunction.StDev(Var1) / _
WorksheetFunction.Average(Var1) * 100
If Application.Caller.Rows.Count > 1 Then
CVE = Application.Transpose(CV_1)
Else: CVE = CV_1
End If
End Function

----------
Ange Ounis
----------

Merci beaucoup.

L'erreur provenait que je voulais avoir les résultats en colonne donc je
selectionnais
A12:A14.

Es-ce possible dans ce sens?

Bonne soirée


Pas de problème chez moi, ta fonction donne les résultats attendus..
Tu sélectionnes bien A1:C1 (par exemple) pour entrer ensuite en A1 qqchose comme :

=CVE(A10:A50)

?

----------
Ange Ounis
----------

Merci, mais j'ai fais un essai avec 3 résultats:

Public Function CVE(ByRef Var1)
Dim CV_1(2) As Variant
CV_1(0) = WorksheetFunction.Average(Var1)
CV_1(1) = WorksheetFunction.StDev(Var1)
CV_1(2) = WorksheetFunction.StDev(Var1) / WorksheetFunction.Average(Var1) *
100
CVE = CV_1
End Function

Le résultat me donne 3 fois CV_1(0).

Ai-je oublié quelque chose ?


Tu dois créer une fonction qui renvoie un résultat de type Variant sous forme
d'un tableau. Pour l'utiliser dans Excel, tu la valides comme une formule
matricielle (Ctrl+Maj+Entrée).
Exemple :

''''dans un module ordinaire
Function Bidon(Param)
Dim Arr(1) 'tableau "relais"
Arr(0) = Param + 1000
Arr(1) = Param * 1000
Bidon = Arr
End Function

''''dans Excel, sélectionne A1:B1 puis dans A1 :
=Bidon(15)
et valide par Ctrl+Maj+Entrée.

----------
Ange Ounis
----------

Dans Excel 2003.

Quel code VBA utiliser pour qu'une "function" donne 2 résultats ou plus, tel
que la résolution d'une équation du second degré, par exempl.