Faire une somme avec une plage variable

Bonjour,

Je n'arrive pas à trouver la fonction somme avec une plage variable dans VBA.

Je ne peux pas joindre mon fichier car données confidentielles.

J'ai un tableau croisé dynamique qui commence dans la colonne A et ligne 148 (étiquettes de lignes). Ce tableau va changer en fonction des données qui seront analysées, c'est à dire nombre de lignes et nombres de colonnes variables :

image

J'ai défini des variables pour savoir combien de ligne et combien de colonne comporte mon tableau :

Dim DerniereligneOF As Integer
Dim DernierecolonneOF As Integer
Dim LigneTotal As Integer
Dim PremierecolonneOF As Integer
Dim PremiereligneOF As Integer
Dim i As Integer
Dim PlageSomme As Range

Range("A149").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.End(xlDown).Select
DerniereligneOF = ActiveCell.Row

Range("A148").Activate
Range(Selection, Selection.End(xlToRight)).Select
Selection.End(xlToRight).Select
DernierecolonneOF = ActiveCell.Column

Range("B148").Activate
PremierecolonneOF = ActiveCell.Column

Range("B148").Activate
PremiereligneOF = ActiveCell.Row

Range("A" & DerniereligneOF + 1).Activate
LigneTotal = ActiveCell.Row
ActiveCell.FormulaR1C1 = "Total"

J'écris le titre total dans la première colonne et ligne du dessous du tableau avec la macro.

Ensuite, je veux faire la somme de chaque colonne de mon tableau croisé dynamique et écrire le résultat de chaque colonne sur la ligne Total, j'avais essayé sans boucle et maintenant je suis partie dans une solution avec boucle mais j'ai toujours une erreur dans ma fonction. Dans mon code, j'ai mis en ligne de commentaire ce que j'avais tenté ou des bouts de code pour m'en inspirer. C'est vraiment le fait de n'utiliser que des variables qui me bloque, je ne trouve pas la syntaxe.

i = 0

Cells(DerniereligneOF + 1, PremierecolonneOF + i).Select
Cells(DerniereligneOF + 1, PremierecolonneOF + i) = Application.WorksheetFunction.Sum(Cells(DerniereligneOF, Premierecolonne + i), Cells(DerniereligneOF + 1, DernierecolonneOF))

'Range(PremierecolonneOF & DerniereligneOF + 1).Activate

'Set PlageSomme = Range(Cells(PremierecolonneOF + i & PremiereligneOF), Cells(PremierecolonneOF + i & DerniereligneOF))
'Range("B179") = Application.WorksheetFunction.Sum(PlageSomme)

'Range(Cells(PremierecolonneOF + i & DerniereligneOF + 1)) = WorksheetFunction.Sum(PlageSomme)

'Range(Cells(DerniereligneOF + 1, PremierecolonneOF)) = Application.WorksheetFunction.Sum(Cells(PremiereligneOF, PremierecolonneOF + i), Cells(DerniereligneOF, PremierecolonneOF))

'Range.AutoFill Destination:=Sum(Cells(DerniereligneOF + 1, "B"), Cells(DerniereligneOF + 1, DernierecolonneOF))
' Range("B178").Select
    'Selection.AutoFill Destination:=Range("B178:X178"), Type:=xlFillDefault
'Selection.AutoFill Destination:=Range("B178:X178"), Type:=xlFillDefault '

'Selection.AutoFill Destination:=Range(Cells(2, Colonne), Cells(Derniere_ligne, Colonne))

SI j'ai besoin de faire une macro pour calculer la somme de chaque colonne du tableau croisé dynamique c'est parce que mes valeurs dans le tableau sont des moyennes, et lorsque j'utilise la fonction total général du tableau croisé, il me fait la moyenne de mes colonnes et non la somme.

Merci par avance

bonjour,

Je ne peux pas joindre mon fichier car données confidentielles.

il n'est pas interdit de mettre un fichier exemple représentatif avec des données fictives.

Rechercher des sujets similaires à "somme plage variable"