XL 2010 RESOLU : FormulaR1C1 avec une variable (valeur dans une cellule)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JeromeR63

XLDnaute Nouveau
Bonjour,

Je souhaiterais créer une formule (somme) avec une variable.
EN pièce jointe le fichier permettant de mieux comprendre la demande.
Pour cet exemple : je souhaite faire la somme de G27 à G32 dans la cellule G34.

Lorsque je met la formule ci dessous, la macro me donne =SOMME(G32:G61)

ActiveCell.FormulaR1C1 = "=SUM(R[" & y1 & "]C:R[-2]C)"

Merci par avance pour votre aide
Bonne journée

Jérôme
 

Pièces jointes

Bonjour.
Enlevez les crochets droits pour la ligne de la cellule de départ :
VB:
ActiveCell.FormulaR1C1 = "=SUM(R" & y1 & "C:R[-2]C)"

Edit:
Notez que j'écrirais le tout plutôt comme ça :
VB:
Sub Macro1()
Dim LDép As Long, Cel As Range
LDép = 3
Set Cel = ActiveSheet.Columns("C").Find(What:="MONTANT TOTAL HT", _
   LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
   SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
Do While Cel.Row > LDép
    Cel.Offset(, 4).FormulaR1C1 = "=SUM(R" & LDép & "C:R[-2]C)"
    LDép = Cel.Row + 4
    Columns("C").FindNext: Loop
End Sub
 
Dernière édition:
Merci pour ta réponse Dranreb.
Pourtant il me semblait avoir essayé sans les crochets.
Maintenant cela fonctionne parfaitement.

jacky67 : Il s'agit uniquement d'une partie du code. A la base l'onglet n'existe pas. Merci quand même pour la remarque.

Merci pour votre réactivité.
Bonne journée
 
Si toute les cellules de la colonne C contenant "MONTANT" sont des totaux de ce qui précède alors oui, il faut utiliser la fonction SOUS.TOTAL :
VB:
Sub Macro1()
Dim LDép As Long, LRub As Long, Cel As Range
LDép = 2: LRub = 2: Set Cel = ActiveSheet.[C2]
Do
   Set Cel = ActiveSheet.Columns("C").Find(What:="MONTANT", After:=Cel, _
      LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
      SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
   If Cel.Row < LRub Then Exit Sub
   If Cel.Value Like "MONTANT TOTAL *" Then
      Cel.Offset(, 4).FormulaR1C1 = "=SUBTOTAL(9,R" & LDép & "C:R[-1]C)"
      If Cel.Value = "MONTANT TOTAL TTC" Then LDép = Cel.Row + 2: LRub = LDép
   Else
      Cel.Offset(, 4).FormulaR1C1 = "=SUBTOTAL(9,R" & LRub & "C:R[-1]C)"
      LRub = Cel.Row + 1
      End If: Loop
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour