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

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

  • Initiateur de la discussion Initiateur de la discussion JeromeR63
  • Date de début Date de début

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 !

J

JeromeR63

Guest
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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