[VBA] Excel - somme en relatif

Résolu/Fermé
IBegin Messages postés 7 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 janvier 2008 - 12 juil. 2007 à 16:33
 Utilisateur anonyme - 13 juil. 2007 à 16:07
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+
A voir également:

5 réponses

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
13 juil. 2007 à 12:41
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
Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
12 juil. 2007 à 17:00
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
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
Utilisateur anonyme
13 juil. 2007 à 15:42
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
13 juil. 2007 à 16:07
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