Bonjour,
j'utilise une formule matricielle pour dans un tableau pour un calcul un peu complexe.
Pour me donner plus de flexibilité, j'ai voulu créer une fonction vba pour ce calcul, et l'insérer dans ma formule, seulement, cela me donne un #valeur.
Ma table ressemble à ceci :
avec une cellule qui contient une date nommée "curDate", par exemple 13/1/2009
ma fonction (dans un module) qui retourne un nombre
Si j'écris ma formule matricielle simplifiée, ça marche :
(les l_quelquechose sont des plages nommées)
(je n'ai pas réussi à l'écrire en SOMMEPROD, au passage)
Lorsque je teste ma fonction sur chacune des lignes de mon tableau, j'ai bien la bonne valeur, et je peux sommer sans soucis.
et ma fonction matricielle :
me retourne #VALEUR
Je pourrais transformer ma fonction pour prendre des plages, mais c'est moins souple dans mon utilisation, donc, j'appelle à l'aide
Merci d'avance,
--
Damien
j'utilise une formule matricielle pour dans un tableau pour un calcul un peu complexe.
Pour me donner plus de flexibilité, j'ai voulu créer une fonction vba pour ce calcul, et l'insérer dans ma formule, seulement, cela me donne un #valeur.
Ma table ressemble à ceci :
Code:
charge date date
estimée début fin
1 1/1/2009 15/1/2009
2 3/1/2009 12/1/2009
3 8/1/2009 25/1/2009
ma fonction (dans un module) qui retourne un nombre
Code:
Public Function chargeADate(curDate As Date, workload As Long, startDate As Date, endDate As Date)
...
End Function
Si j'écris ma formule matricielle simplifiée, ça marche :
Code:
{=SOMME(SI(G$79<l_date_deb_previ;0;SI(G$79<l_date_fin_previ;(G$79-l_date_deb_previ)/(l_date_fin_previ-l_date_deb_previ)*l_charge_reest;l_charge_reest)))}
(je n'ai pas réussi à l'écrire en SOMMEPROD, au passage)
Lorsque je teste ma fonction sur chacune des lignes de mon tableau, j'ai bien la bonne valeur, et je peux sommer sans soucis.
et ma fonction matricielle :
Code:
{=SOMME(chargeAdate(curDate;l_charge_reest;l_date_deb_previ;l_date_fin_previ))}
Je pourrais transformer ma fonction pour prendre des plages, mais c'est moins souple dans mon utilisation, donc, j'appelle à l'aide
Merci d'avance,
--
Damien