EVALUATE

A quoi sert la fonction evaluate ? Comment écrire une formule matricielle en VBA ?

Vous utilisez dans votre feuille de calcul une fonction matricielle et vous voudriez faire la même chose dans une macro. Si vous lancez l'enregistreur de macro, vous récupérez quelque chose comme

Selection.FormulaArray =  "= ici_votre_formule_traduite_en_anglais"

et vous êtes fort ennuyé pour l'utiliser dans une macro. La fonction Evaluate est faite pour vous :

Evaluate, utilisé dans une macro sert à créer une "cellule virtuelle". Cette fonction calcule l'expression passée en argument comme si elle était saisie dans une cellule de la feuille de calcul active, et renvoie le résultat correspondant. Mais le plus fort c'est que implicitement Evaluate traite toute expression qui lui est passée en argument comme une fonction matricielle.

L'expression doit correspondre à une formule en anglais. Par exemple,

Evaluate("SUM(A1:B4)") 

renvoie le même résultat que la formule

=SOMME(A1:B4)

si elle était saisie dans une cellule de la feuille active.

Les [ ] sont un raccourci syntaxique de cette fonction.
Par exemple,

[SUM(OFFSET(A1,B1,,5))] 

est synonyme de

Evaluate("SUM(OFFSET(A1,B1,,5))")

ce qui renvoie en l'occurrence la même chose que la formule

=SOMME(DECALER(A1;B1;;5))

 

Auteurs : ,

Mots clefs associés à cette page : , , ,