Gestion des fonctions intégrées d'Excel dans VBA

Il est très possible d'écrire des fonctions intégrées d'Excel dans des cellules depuis VBA, encore faut il avoir une syntaxe correcte. La voici !

Fonction toute simple, sans argument :
ActiveCell.Formula = "=pi()"

Un seul argument, chiffre constant :
ActiveCell.Formula = "=ROMAN(22)"

L'argument est une référence de cellule :
ActiveCell.Formula = "=ROMAN(B1)"

L'argument est une plage de cellules
ActiveCell.Formula = "=SUM(A1:A3)"

Deux arguments, utilisation de la virgule, référence de cellule
ActiveCell.Formula = "=LEFT(A10,2)"

Plus compliqué : utilisation de guillemets en cas de constante textuelle :
ActiveCell.Formula = "=LEFT(" & """" & "abricot" & """" & ")"

Pour utiliser les fonctions en français : FormulaLocal
ActiveCell.FormulaLocal = "=Somme(A1:A3)"

En cas de FormulaLocal et de plusieurs paramètres : Point virgule :
ActiveCell.FormulaLocal = "=gauche(A10;2)"

On peut utiliser cette technique pour obtenir en VBA le résultat d'une fonction intégrée d'Excel :

Range("IV65536").FormulaLocal = "=ROMAIN(22)"
MsgBox ActiveCell.Value
Range("IV65536").Clear

Une alternative a ce dernier exemple est WorksheetFunction :

MsgBox WorksheetFunction.Roman(22)

La liste des fonctions en anglais se trouve ici

On peut afficher la fonction :
En anglais ou ...
MsgBox ActiveCell.Formula
... en français :
MsgBox ActiveCell.FormulaLocal

Ou la valeur résultante :
MsgBox ActiveCell.Value
ou
MsgBox ActiveCell

Si la cellule contient une date, on peut obtenir le no de série avec
MsgBox ActiveCell.Value2

On peut utiliser la notation RowNoLigneColumnNoColonne :
Ici, A10 :
ActiveCell.FormulaR1C1 = "=LEFT(R10C1,2)"

Avec le pendant en français :
ActiveCell.FormulaR1C1Local = "=Gauche(R10C1;2)"

Cette nouvelle notation permet d'appliquer des références relatives :
Traduction en chiffres romains de la cellule :
- 3 cellules plus haut - 2 cellules plus à droite
ActiveCell.FormulaR1C1 = "=Roman(R[-3]C[2])"

3 cellules plus haut, même colonne :
ActiveCell.FormulaR1C1 = "=Roman(R[-3]C[0])"

Autre notation, plus condensée :
ActiveCell.FormulaR1C1 = "=Roman(R[-3]C)"