Introduction

Question fréquemment posée dans les forums est l’insertion de formule à l’aide d’une procédure VBA.
Une façon simple d’intégrer une formule dans un code VBA est l’utilisation de l’enregistreur de macros. Cependant l’enregistreur génère la formule en style R1C1 ce qui n’est pas toujours simple à gérer.
Le plus simple est d’écrire la formule dans excel et de la lire ensuite à l’aide d’une simple instruction en utilisant la propriété Formula de l’objet Range.

Comment écrire une formule simple dans une cellule ?

Exemple 1 :

Prenons un exemple en plaçant en cellules A2 et B2 un nombre quelconque et en cellule C2, une formule qui renvoie le produit de la valeur de ces deux cellules.

Les différentes étapes illustrées plus bas sont :

  1. En cellule C2 la formule =A2*B2
  2. Dans la fenêtre d’exécution de l’éditeur VBA (Ctrl+G), nous taperons l’instruction “? Range("C2").Formula” en la validant par la touche Entrée (Enter).  “?” est une commande raccourcie pour l’instruction Debug.Print)

    Formule simple 1

  3. Le code va donner =A2*B2 qu’il suffira d’intégrer dans une instruction VBA en utilisant la propriété Formula de l’objet Range en lui passant la formule comme valeur Alphanumérique.
    Soit
     
Range("C2").Formula = "=A2*B2"

Exemple 2 :

Nous allons maintenant, écrire une fonction de base d’excel, la somme d’une plage en ligne ($B$2 :$G$2) que l’on placera en cellule H2
Répétons les étapes 1 à 3 décrites plus haut.

  1. Ecriture de la formule =SOMME(B2:G2) en H2
  2. La ligne tapée dans la fenêtre d’exécution nous renvoie =SUM(B2:G2)
  3. Formule qu'il suffit maintenant de placer comme valeur alphanumérique dans la propriété Formula
Range("H2").Formula = "=SUM(B2:G2)"

Comment écrire sa formule dans une plage de cellules ?

Par exemple pour la plage H2:H101 de la feuille [Feuil1], il suffit tout simplement d'écrire.

With ThisWorkbook.Worksheets("Feuil1")
.Range("H2:H101").Formula = "=SUM(B2:G2)"
End With

La suite dans ce billet A l’aide de VBA, comment écrire une formule plus complexe dans une cellule ?