Intégration d'une somme sur range dynamique

plombiero

XLDnaute Nouveau
Bonjour à tous,

Le code suivant sert à récupérer des données et, une fois ceci fait, à les sommer (que j'ai trivialisé dans l'exemple en remplaçant ma formule (qui fonctionne) par "5"

Mon souci se situe au niveau du calcul de la somme : Elle n'est pas dynamique alors que c'est ce que je souhaite, et que mon tableau l'est.

En gros, à l'heure actuelle, si je rajoute une ligne, elle sera bien affectée par mon "5", mais ma somme va se décaler car je "triche" en lui affectant la valeur "11".

Bref, je n'arrive pas intégrer le "nbrligne" à prendre en compte dans la formule somme.

Code:
Option Explicit
Global c As Range

Sub actualisation_pnl()
Dim nbrligne As Integer
Dim lig As Variant
Dim y, z, a, az As Integer

'initialise les valeurs
nbrligne = 0
a = 1

'défini la zone à sélectionner
Set c = ActiveSheet.Cells.Find("Intitulé", LookIn:=xlValues, lookat:=xlWhole)
Range(c, c).CurrentRegion.Select

'compte le nombre de ligne utiles
For Each lig In Selection.Rows
  If Application.CountA(lig) > 0 Then nbrligne = nbrligne + 1
Next

'Réduit ce nombre de 2, ce qui correspond aux entêtes
If Not c Is Nothing Then
nbrligne = nbrligne - 2

'Intègre les calculs
For a = 1 To nbrligne
c.Offset(a, 1).FormulaR1C1 = "=5"
Next a
c.Offset((nbrligne + 1), 1).FormulaR1C1 [COLOR="SeaGreen"]= "=SUM(R[-[/COLOR][b][COLOR="Red"][11][/COLOR][/B][COLOR="seagreen"]C:R[-1]C)"[/COLOR]
End If

End Sub

Je vous joins un fichier d'exemple pour une éventuelle piste.

En vous remerciant d'avance de votre aide :) ,

Damien
 

Pièces jointes

  • testeme.xls
    29 KB · Affichages: 82
G

Guest

Guest
Re : Intégration d'une somme sur range dynamique

Bonjour Damien,

le code d'insertion de la formule totalisante:

Code:
c.Offset((nbrligne + 1), 1).FormulaR1C1 = "=SUM(R[-" [COLOR=red]& nbrligne &[/COLOR] "]C:R[-1]C)"

A bientôt
 

Dull

XLDnaute Barbatruc
Re : Intégration d'une somme sur range dynamique

Salut Plombiero, le Forum
Essaye avec la Valeur Abslolue

Remplace
Code:
c.Offset((nbrligne + 1), 1).FormulaR1C1 = "=SUM(R[-[11]C:R[-1]C)"
Par

Code:
c.Offset((nbrligne + 1), 1).FormulaR1C1 = "=SUM(R7C3:R[-1]C)"
Edition: AlabourreleDull salut Hasco :)

Bonne Journée
 

Discussions similaires

Réponses
11
Affichages
306

Membres actuellement en ligne

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 611
dernier inscrit
sebboes