[VBA] Excel - somme en relatif

Résolu
IBegin Messages postés 7 Statut Membre -  
 Utilisateur anonyme -
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. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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
  2. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    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
  3. Jacot
     
    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
  4. Utilisateur anonyme
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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