par , 30/11/2014 à 17h27 (17277 Affichages)
Un sujet fréquemment évoqué sur 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 ensuite avec une procédure VBA lire à l’aide de la propriété formula de l’objet Range, la cellule où se trouve la formule.
Comment écrire sa première formule dans une cellule ?
Exemple 1 :
Prenons un exemple simple, en A2 et B2 un nombre et en C2 une formule qui renvoie le produit de la valeur de ces deux cellules.
- Ecrire en C2 la formule
- Dans la fenêtre d’exécution de l’éditeur VBA (Ctrl+G), tapez l’instruction qui suit en la validant par la touche Entrée. ( ? est une commande raccourcie pour l'instruction Debug.Print)
- 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 : Avec une formule de base d’excel, la somme d’une plage en ligne ($A$2 :$G$2) que l’on placera en cellule H2
Répétons les étapes 1 à 3 décrites plus haut.
- Ecriture de la formule en H2
- La ligne tapée dans la fenêtre d’exécution nous renvoie
- Formule qu'il suffit maintenant de placer comme valeur alphanumérique dans la propriété Formula
Range("H2").Formula = "=SUM(A2:G2)"
Comment écrire sa formule dans une plage de cellule de la même colonne ?
Evidemment, il faut écrire notre formule dans une plage complète de la même colonne;
Par exemple de G2 à G101
Il suffit tout simplement d'écrire.
1 2 3
| With ThisWorkbook.Worksheets("Feuil1")
.Range("H2:H101").Formula = "=SUM(A2:G2)"
End With |
Comment écrire des formules plus complexes et rendre dynamique les références aux plages de cellules ?
La suite de ce billet traite des formules plus complexes.