Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Comment insérer Formule en VBA[RESOLU]

cp4

XLDnaute Barbatruc
Bonjour,

Suite à mes recherches infructueuses, je m'emmêle les pinceaux avec les références R1C1.
Voilà, je crée le fichier ci-joint en VBA à partir d'un autre classeur et je voudrais dans le code insérer une formule sur la ligne total pour sommer les colonnes.
La sommation concerne les colonnes B à F, de la ligne 2 (1er jour du mois) à la dernière ligne (dernier jour du mois).
En utilisant l'enregistreur de macro, la formule est de ce genre----> Range("D22").FormulaR1C1 = "=SUM(R[-19]C:R[-1]C)"
Je trouve des difficultés à adapter à mon cas. Vu que la cellule qui reçoit la formule change de ligne en fonction du mois, ainsi que le nombre de jours à sommer.

En vous remerciant par avance.
Bonne journée.
 

Pièces jointes

  • 2017.xlsx
    19.1 KB · Affichages: 10

pierrejean

XLDnaute Barbatruc
Bonjour Cp4

A tester:
VB:
Sub test()
For Each sh In Sheets
 Set c = sh.Columns(1).Find("Total", LookIn:=xlValues, lookat:=xlWhole)
 If Not c Is Nothing Then ligne = c.Row
 For m = 2 To 6
    sh.Cells(ligne, m).FormulaR1C1 = "=SUM(R[-" & ligne - 3 & "]C:R[-1]C)"
 Next
Next
End Sub
 
Réactions: cp4

cp4

XLDnaute Barbatruc
Bonjour Pierrejean ,

Très gentil de ta part. Merci aussi pour la célérité de ta réponse.
Je vais réfléchir quant à l'utilisation de ton code qui répond bien à ma demande.
Mais j'ai trouvé une solution en insérant la formule dans la cellule par code avec la ligne ci-dessous
Range("f" & nbj + 1).Formula = "=Sum(f3:f" & nbj & ") "
Il ne me reste plus qu'à boucler sur les colonnes concernées.
Je me suis inspiré de cette discussion, cette réponse d'Hippolite (que je salue en passant).

Avec tous mes remerciements.
Bonne journée.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pourquoi ne mettez vous pas un '$' devant le numéro de ligne qui doit toujours être le même ?
En utilisant l'enregistreur de macro, la formule devientrait ----> Range("D22").FormulaR1C1 = "=SUM(R3C:R[-1]C)"
Vous auriez aussi intérêt à l'affecter en une fois à toute la ligne.
VB:
Cells(Ligne, "B").Resize(, 5).FormulaR1C1 = "=SUM(R3C:R[-1]C)"
 
Dernière édition:
Réactions: cp4

cp4

XLDnaute Barbatruc
Bonjour Dranreb ,
En effet, ta formule avec l'enregistreur est plus juste. J'avais utilisé un autre classeur pour enregistrer la macro, juste pour avoir la "syntaxe" de la formule.
Oui, je vais suivre ton conseil ($) devant le numéro de ligne. Merci pour ta formule.

Mes remerciements
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…