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

cp4

XLDnaute Impliqué
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.
 

Fichiers joints

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
 
  • J'adore
Reactions: cp4

cp4

XLDnaute Impliqué
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.:cool:
 

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:
  • J'adore
Reactions: cp4

cp4

XLDnaute Impliqué
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)"
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:)
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas