Bonjour à tous,
Je souhaite réaliser une fonction qui utilisera en argument une plage de cellule et qui donnera en résultat une autre plage de cellules.
Après des recherches j'ai trouvé un exemple pour la deuxième partie :
En ayant sélectionné le nombre de cellules qui va bien en faisant ctrl + shit + enter, on obtient bien 2 résultats issus de la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function A_B(A As Double, B As Double) As Variant Dim TabTemp As Variant ReDim TabTemp(1 To 2, 1 To 1) TabTemp(1, 1) = A - B TabTemp(2, 1) = B - A A_B = TabTemp End Function
J'ai trouvé un exemple de fonction prenant une plage de cellule comme argument et donne comme résultat un double :
Mais les choses se sont compliquées lorsque j'ai voulu associer les deux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Function myAdd(ParamArray Args2() As Variant) As Double Dim elem As Variant Dim i As Long For Each elem In Arg1 myAdd = myAdd + elem.Value Next elem For i = LBound(Args2) To UBound(Args2) For Each elem In Args2(i) myAdd = myAdd + elem.Value Next elem Next i End Function
Et là j'ai sur les 2 cases sélectionnées (n'ayant pris que 2 cellules en argument) #VALEUR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function myAdd2(Args2() As Variant) As Variant Dim i As Long Dim TabTemp As Variant ReDim TabTemp(1 To 2, 1 To 1) For i = LBound(Args2) To UBound(Args2) TabTemp(i) = Args2(i) + 1 Next i myAdd2 = TabTemp End Function
J'ai eu beau bidouiller, rien n'y fait. J'ai même essayé de faire apparaître la valeur de UBound(Args2) en déclarant myAdd2 en Long, rien de marche.
Quelqu'un peut-il m'expliquer les erreurs que je fais.
Cordialement
Partager