OVH Cloud OVH Cloud

création d'une fonction dans VBA

7 réponses
Avatar
patrice de toulouser
Comment dois je définir les arguments pour que la fonction ne retoune pas
juste qu'une seule valeur mais plusieurs voir un tableau

merci

7 réponses

Avatar
michdenis
Bonjour Patrice,

Voici un petit exemple du Vendredi qui ne sert qu'à illustrer le principe

Supposons que tu as 3 digits et que tu veuilles les extraire séparément pour les afficher dans 3 cellules séparées

'--------------------------------
Function Div(rg As Range)

Dim Arr(2)

Arr(0) = Left(rg, 1)
Arr(1) = Mid(rg, 2, 1)
Arr(2) = Right(rg, 1)

Div = WorksheetFunction.Transpose(Arr)

End Function
'--------------------------------

Dans ta feuille de calcul, tu sélectionnes 3 cellules (colonne) et tu entres la formule suivante :
=div(A1) en supposant que A1 = 123
Et tu valides ta formule par Maj + Ctrl + Enter


Salutations!



"patrice de toulouser" <patrice de a écrit dans le message de news:

Comment dois je définir les arguments pour que la fonction ne retoune pas
juste qu'une seule valeur mais plusieurs voir un tableau

merci
Avatar
patrice de toulouser
bonsoir micdenis

ton example fonctionne bien par contre si je le refais avec des opérations
cela ne marche pas et génère une erreur de compilation example :
Public Function somm(elm1 As Single, elm2 As Single)

somm(1) = elm1 + elm2
somm(2) = elm1 - elm2

End Function




Bonjour Patrice,

Voici un petit exemple du Vendredi qui ne sert qu'à illustrer le principe

Supposons que tu as 3 digits et que tu veuilles les extraire séparément pour les afficher dans 3 cellules séparées

'--------------------------------
Function Div(rg As Range)

Dim Arr(2)

Arr(0) = Left(rg, 1)
Arr(1) = Mid(rg, 2, 1)
Arr(2) = Right(rg, 1)

Div = WorksheetFunction.Transpose(Arr)

End Function
'--------------------------------

Dans ta feuille de calcul, tu sélectionnes 3 cellules (colonne) et tu entres la formule suivante :
=div(A1) en supposant que A1 = 123
Et tu valides ta formule par Maj + Ctrl + Enter


Salutations!



"patrice de toulouser" <patrice de a écrit dans le message de news:

Comment dois je définir les arguments pour que la fonction ne retoune pas
juste qu'une seule valeur mais plusieurs voir un tableau

merci





Avatar
Ange Ounis
Je ne pense pas que tu peux affecter les résultats attendus un par un. Tu dois
affecter à ta fonction son résultat sous forme d'un tableau "rempli". C'est pour
cette raison que tu as besoin d'une variable tableau intermédiaire. Par
ailleurs, par défaut, les tableaux sont de base 0 (à moins que tu n'aies déclaré
Option Base 1 en tête de module).

'*****************
Public Function somm(elm1 As Single, elm2 As Single)
Dim Arr(1)
Arr(0) = elm1 + elm2
Arr(1) = elm1 - elm2
somm = Arr
End Function

Sub essai()
MsgBox somm(20, 30)(1)
End Sub
'*****************

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

bonsoir micdenis

ton example fonctionne bien par contre si je le refais avec des opérations
cela ne marche pas et génère une erreur de compilation example :
Public Function somm(elm1 As Single, elm2 As Single)

somm(1) = elm1 + elm2
somm(2) = elm1 - elm2

End Function





Bonjour Patrice,

Voici un petit exemple du Vendredi qui ne sert qu'à illustrer le principe

Supposons que tu as 3 digits et que tu veuilles les extraire séparément pour les afficher dans 3 cellules séparées

'--------------------------------
Function Div(rg As Range)

Dim Arr(2)

Arr(0) = Left(rg, 1)
Arr(1) = Mid(rg, 2, 1)
Arr(2) = Right(rg, 1)

Div = WorksheetFunction.Transpose(Arr)

End Function
'--------------------------------

Dans ta feuille de calcul, tu sélectionnes 3 cellules (colonne) et tu entres la formule suivante :
=div(A1) en supposant que A1 = 123
Et tu valides ta formule par Maj + Ctrl + Enter


Salutations!



"patrice de toulouser" <patrice de a écrit dans le message de news:

Comment dois je définir les arguments pour que la fonction ne retoune pas
juste qu'une seule valeur mais plusieurs voir un tableau

merci







Avatar
jps
l'essentiel est qu'on se comprend...
jps

"Ange Ounis" a écrit dans le message de
news:
Je ne pense pas que tu peux affecter les résultats...


Avatar
Ange Ounis
totafi :)

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

l'essentiel est qu'on se comprend...
jps

"Ange Ounis" a écrit dans le message de
news:

Je ne pense pas que tu peux affecter les résultats...






Avatar
jps
:-)))))
jps

"Ange Ounis" a écrit dans le message de news:

totafi :)

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

l'essentiel est qu'on se comprend...
jps

"Ange Ounis" a écrit dans le message de
news:

Je ne pense pas que tu peux affecter les résultats...







Avatar
jps
et je sens que cet ange ne va pas tarder à scudo-veiller sur moi.....
jps

"Ange Ounis" a écrit dans le message de news:

totafi :)

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

l'essentiel est qu'on se comprend...
jps

"Ange Ounis" a écrit dans le message de
news:

Je ne pense pas que tu peux affecter les résultats...