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/2009ma 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 FunctionSi 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
 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		