Formule trop longue - solutions ?

Formule trop longue - solutions ? - VB/VBA/VBS - Programmation

Marsh Posté le 20-06-2008 à 10:25:23    

Salut,
 
Je rencontre un problème. J'ai du code VBA qui génère des formules. Or une des formules générées semble bien trop longue.
Apparemment la limite pour la taille des formules est 1024 octets.
Voici la fameuse formule :  


=SUMPRODUCT( N(WEEKDAY(Reg20080101,2)=C$38), N(OFFSET(Reg20080101,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080101,2)=C$38), N(OFFSET(Reg20080101,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080102,2)=C$38), N(OFFSET(Reg20080102,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080102,2)=C$38), N(OFFSET(Reg20080102,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080103,2)=C$38), N(OFFSET(Reg20080103,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080103,2)=C$38), N(OFFSET(Reg20080103,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080104,2)=C$38), N(OFFSET(Reg20080104,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080104,2)=C$38), N(OFFSET(Reg20080104,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080105,2)=C$38), N(OFFSET(Reg20080105,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080105,2)=C$38), N(OFFSET(Reg20080105,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080106,2)=C$38), N(OFFSET(Reg20080106,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080106,2)=C$38), N(OFFSET(Reg20080106,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080107,2)=C$38), N(OFFSET(Reg20080107,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080107,2)=C$38), N(OFFSET(Reg20080107,3,0)="RP" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080108,2)=C$38), N(OFFSET(Reg20080108,3,0)="R" ))
+SUMPRODUCT( N(WEEKDAY(Reg20080108,2)=C$38), N(OFFSET(Reg20080108,3,0)="RP" ))
+etc ...


 
1/ Est-il possible de créer des formules personnelles qui font appel à des sous fonctions du même type que les formules utilisées ci-dessus ? Autrement dit, puis-je remplacer SUMPRODUCT par un appel de fonction dans le corps d'une procédure que j'utiliserai comme une formule ?
 
2/ Avez-vous une idée pour résoudre mon PB sachant que je ne peux pas raccourcir les noms de plages utilisés ?


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
Reply

Marsh Posté le 20-06-2008 à 10:25:23   

Reply

Marsh Posté le 20-06-2008 à 15:06:30    

Finalement en réfléchissant, y a-t-il moyen de réduire l'expression suivante :  


SUMPRODUCT( N(WEEKDAY(Reg20080101,2)=C$38), N(OFFSET(Reg20080101,3,0)="R" ))  
+SUMPRODUCT( N(WEEKDAY(Reg20080101,2)=C$38), N(OFFSET(Reg20080101,3,0)="RP" ))


en une expression du style :


SUMPRODUCT( N(WEEKDAY(Reg20080101,2)=C$38), N(APPARTIENT(OFFSET(Reg20080101,3,0),"R", "RP" ))  


Dans le 2ème exemple la fonction APPARTIENT n'existe pas ... mais si vous connaissez un truc pour passer du morceau de formule 1 à quelque chose du type du morceau de formule 2, ca m'intéresse.
 
Merci  ;)


Message édité par jipo le 20-06-2008 à 15:07:33

---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
Reply

Marsh Posté le 21-06-2008 à 14:19:15    

salut, voir aide en ligne sur la création de fonctions personnalisées, elles sont mixables avec les fonctions intégrées d'Excel, pour les fonctions personnalisées utiliser éventuellement Application.Volatile=True ( voir aide en ligne )


Message édité par kiki29 le 21-06-2008 à 14:23:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed