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

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

  • Jerome total variante.xlsm
    23.2 KB · Affichages: 28

Dranreb

XLDnaute Barbatruc
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:

JeromeR63

XLDnaute Nouveau
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
 

Dranreb

XLDnaute Barbatruc
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:

Discussions similaires