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.
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
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).
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.
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.
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.