[VBA] Excel - somme en relatif

Résolu
Bonjour,
J'essaye de faire générer par vba une formule somme dans une cellule. J'ai fait une macro pour dégrossir, que j'ai bidouillé un peu et ça me donne :
Cells(i, j).Value = "=SUM(R[-6]C:R[-1]C)"
je somme donc les 6 lignes qui sont au dessus de ma cellule.

Question, comment peut on faire pour que le -6 soit paramétrable?
J'ai une variable qui vient chercher le nombre de cellule que l'on veut sommer (elle s'appelle nbrlig) et j'ai essayé, sans succès
Cells(i, j).Value = "=SUM(R["&nbrlig&"]C:R[-1]C)"

Merci d'avance pour votre aide !
A+
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. Bonjour IBegin,

    Voici la solution à ton problème :

    Cells(i, j) = Application.WorksheetFunction.Sum(Range(Cells(i, j).Offset(-nblg, 0), Cells(i, j).Offset(-1, 0)))


    Cordialement.

    Papou
    0
    1. Bonjour IBegin,

      si tu as bien une variable nbrlig que tu peux changer de valeur

      Cells(i, j).Value =SUM(R[-" & nbrlig & "]C:R[-1]C)"

      cordialement

      Jacot
      0
      1. salut,

        Ce n'est pas la propriété Value qu'il faut renseigner, mais FormulaR1C1 en l'occurence. Ce qui donne :
        Cells(i, j).FormulaR1C1 =SUM(R[-" & nbrlig & "]C:R[-1]C)" 
        
        1
        1. Bonjour,

          Pour ma part, je considère la formule comme une chaine de caractères, je peux donc utiliser
          la propriété [Value] de la cellule.

          Option Explicit
          '
          
          Sub InsereFormule()
          
              Dim MaFormule As String
              Dim NomCol1 As String, NomCol2 As String
              Dim NumLig1 As Long, NumLig2 As Long
                  
                  
              NomCol1 = "A": NomCol2 = "A"
              NumLig1 = 1: NumLig2 = 9
              MaFormule = "=SUM(" & NomCol1 & NumLig1 & ":" & _
                                      NomCol2 & NumLig2 & ")"
              
              Cells(10, 1).Value = MaFormule
          
          End Sub
          '
          

          Lupin
          0
          1. re :

            j'ajouterai que les propriétés [ Value ] et [ Formula ] sont affaires de direction d'affectation.

            maVariable = ActiveCell.Value
            maVariable = ActiveCell.Formula

            ActiveCell.Value = maVariable
            ActiveCell.Formula = maVariable

            démonstration :

            <code>
            Option Explicit
            '

            Sub InsereFormule()

            Dim MaFormule As String, Message As String
            Dim NomCol1 As String, NomCol2 As String
            Dim NumLig1 As Long, NumLig2 As Long

            Range("A1").Formula = 4: Range("A2").Formula = 5
            NomCol1 = "A": NomCol2 = "A"
            NumLig1 = 1: NumLig2 = 2

            MaFormule = "=SUM(" & NomCol1 & NumLig1 & ":" & _
            NomCol2 & NumLig2 & ")"

            Cells(3, 1).Formula = MaFormule

            Message = "Cellule A1 Valeur = " & Range("A1").Value & vbLf
            Message = Message & "Cellule A1 Formule = " & Range("A1").Formula & vbLf & vbLf
            Message = Message & "Cellule A2 valeur = " & Range("A2").Value & vbLf
            Message = Message & "Cellule A2 Formule = " & Range("A2").Formula & vbLf & vbLf
            Message = Message & "Cellule A3 valeur = " & Range("A3").Value & vbLf
            Message = Message & "Cellule A3 Formule = " & Range("A3").Formula & vbLf
            MsgBox Message

            Range("A1").Value = 4: Range("A2").Value = 5
            Cells(3, 1).Value = MaFormule

            Message = "Cellule A1 Valeur = " & Range("A1").Value & vbLf
            Message = Message & "Cellule A1 Formule = " & Range("A1").Formula & vbLf & vbLf
            Message = Message & "Cellule A2 valeur = " & Range("A2").Value & vbLf
            Message = Message & "Cellule A2 Formule = " & Range("A2").Formula & vbLf & vbLf
            Message = Message & "Cellule A3 valeur = " & Range("A3").Value & vbLf
            Message = Message & "Cellule A3 Formule = " & Range("A3").Formula & vbLf
            MsgBox Message

            End Sub
            '

            voici du moins la perception que j'en ai !

            Lupin
            0