[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+
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
-
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 -
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 -
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)"
-
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 -
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