Passer un tableau sous la forme {1;2;3} a une fonction personnalisée
2 réponses
Xavier
Bonjour,
J'ecris actuellement une petite fonction personnalisée en VBA et j'aimerai
comme on peut le faire habituellement avec les fonctions natives d'Excel
dans les feuille de calcul transmettre un argument "matrice/tableau" sous la
forme {1;2;3}. La fonction basique pour lequel je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray
Dim i As Long, Tmp As Double
Tmp = 0
For i = LBound(Valeurs) To UBound(Valeurs)
Tmp = Tmp + Valeurs(i)
Next i
SOMME_BIS= Tmp
End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en A1
=SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3})
(renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer au
sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la création
d'un tableau effectif en vba via Array ou autre...
Merci pour toute piste
Xavier
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Xavier
Merci pour l'astuce Daniel. Ca marche...
"Daniel" a écrit dans le message de news: %
Bonjour. Remplace : Tmp = Tmp + Valeurs(i) par : Tmp = Tmp + Valeurs(i, 1) Cordialement. Daniel "Xavier" a écrit dans le message de news: 45051deb$0$5072$
Bonjour, J'ecris actuellement une petite fonction personnalisée en VBA et j'aimerai comme on peut le faire habituellement avec les fonctions natives d'Excel dans les feuille de calcul transmettre un argument "matrice/tableau" sous la forme {1;2;3}. La fonction basique pour lequel je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray Dim i As Long, Tmp As Double Tmp = 0 For i = LBound(Valeurs) To UBound(Valeurs) Tmp = Tmp + Valeurs(i) Next i SOMME_BIS= Tmp End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en A1 =SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3}) (renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer au sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la création d'un tableau effectif en vba via Array ou autre... Merci pour toute piste Xavier
Merci pour l'astuce Daniel. Ca marche...
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
%23yEhWLY1GHA.1304@TK2MSFTNGP05.phx.gbl...
Bonjour.
Remplace :
Tmp = Tmp + Valeurs(i)
par :
Tmp = Tmp + Valeurs(i, 1)
Cordialement.
Daniel
"Xavier" <xni@free.fr> a écrit dans le message de news:
45051deb$0$5072$ba4acef3@news.orange.fr...
Bonjour,
J'ecris actuellement une petite fonction personnalisée en VBA et
j'aimerai comme on peut le faire habituellement avec les fonctions
natives d'Excel dans les feuille de calcul transmettre un argument
"matrice/tableau" sous la forme {1;2;3}. La fonction basique pour lequel
je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray
Dim i As Long, Tmp As Double
Tmp = 0
For i = LBound(Valeurs) To UBound(Valeurs)
Tmp = Tmp + Valeurs(i)
Next i
SOMME_BIS= Tmp
End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en
A1
=SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3})
(renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer
au sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la
création d'un tableau effectif en vba via Array ou autre...
Merci pour toute piste
Xavier
Bonjour. Remplace : Tmp = Tmp + Valeurs(i) par : Tmp = Tmp + Valeurs(i, 1) Cordialement. Daniel "Xavier" a écrit dans le message de news: 45051deb$0$5072$
Bonjour, J'ecris actuellement une petite fonction personnalisée en VBA et j'aimerai comme on peut le faire habituellement avec les fonctions natives d'Excel dans les feuille de calcul transmettre un argument "matrice/tableau" sous la forme {1;2;3}. La fonction basique pour lequel je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray Dim i As Long, Tmp As Double Tmp = 0 For i = LBound(Valeurs) To UBound(Valeurs) Tmp = Tmp + Valeurs(i) Next i SOMME_BIS= Tmp End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en A1 =SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3}) (renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer au sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la création d'un tableau effectif en vba via Array ou autre... Merci pour toute piste Xavier
Daniel
Bonjour. Remplace : Tmp = Tmp + Valeurs(i) par : Tmp = Tmp + Valeurs(i, 1) Cordialement. Daniel "Xavier" a écrit dans le message de news: 45051deb$0$5072$
Bonjour, J'ecris actuellement une petite fonction personnalisée en VBA et j'aimerai comme on peut le faire habituellement avec les fonctions natives d'Excel dans les feuille de calcul transmettre un argument "matrice/tableau" sous la forme {1;2;3}. La fonction basique pour lequel je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray Dim i As Long, Tmp As Double Tmp = 0 For i = LBound(Valeurs) To UBound(Valeurs) Tmp = Tmp + Valeurs(i) Next i SOMME_BIS= Tmp End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en A1 =SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3}) (renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer au sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la création d'un tableau effectif en vba via Array ou autre... Merci pour toute piste Xavier
Bonjour.
Remplace :
Tmp = Tmp + Valeurs(i)
par :
Tmp = Tmp + Valeurs(i, 1)
Cordialement.
Daniel
"Xavier" <xni@free.fr> a écrit dans le message de news:
45051deb$0$5072$ba4acef3@news.orange.fr...
Bonjour,
J'ecris actuellement une petite fonction personnalisée en VBA et j'aimerai
comme on peut le faire habituellement avec les fonctions natives d'Excel
dans les feuille de calcul transmettre un argument "matrice/tableau" sous
la forme {1;2;3}. La fonction basique pour lequel je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray
Dim i As Long, Tmp As Double
Tmp = 0
For i = LBound(Valeurs) To UBound(Valeurs)
Tmp = Tmp + Valeurs(i)
Next i
SOMME_BIS= Tmp
End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en
A1
=SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3})
(renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer au
sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la création
d'un tableau effectif en vba via Array ou autre...
Merci pour toute piste
Xavier
Bonjour. Remplace : Tmp = Tmp + Valeurs(i) par : Tmp = Tmp + Valeurs(i, 1) Cordialement. Daniel "Xavier" a écrit dans le message de news: 45051deb$0$5072$
Bonjour, J'ecris actuellement une petite fonction personnalisée en VBA et j'aimerai comme on peut le faire habituellement avec les fonctions natives d'Excel dans les feuille de calcul transmettre un argument "matrice/tableau" sous la forme {1;2;3}. La fonction basique pour lequel je fais un test est :
Function SOMME_BIS(Valeurs() As Variant) 'ParamArray Dim i As Long, Tmp As Double Tmp = 0 For i = LBound(Valeurs) To UBound(Valeurs) Tmp = Tmp + Valeurs(i) Next i SOMME_BIS= Tmp End Function
(J'aimerais donc pouvoir écrire dans ma feuille de calcul par exemple en A1 =SOMME_BIS({1;2;3})(renvoie #VALEUR) comme je peux écrire =SOMME({1;2;3}) (renvoie 6)
Est il possible de faire cela relativement simplement ou faut il passer au sein du code par la décomposition de {1;2;3} en 1, 2 et 3 et la création d'un tableau effectif en vba via Array ou autre... Merci pour toute piste Xavier