Bonjour,

ci dessous mon code VBA pour faire des sous totaux dans un tableau

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Range("A1").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Subtotal GroupBy:=6, Function:=xlSum, TotalList:=Array(13, 14), _ 
Replace:=True, PageBreaks:=False, SummaryBelowData:=True 
Range("R6").Select
les sous totaux sont faits sur la quantité et la valeur €.

seulement je voudrais rajouter une fonction moyenne pondérée (sommeprod(X1;X2)/somme(X1)) à chaque changement de critère (référence produit dans notre tableau), sur le même modèle que les sommes des sous.totaux.

ci dessous la formule manuelle pour le premier critère : les données sont sur 2 colonnes fixes (dc pas de pb) et dans cet exemple 4 lignes (nbre variable qui pose problème)

(sur la cellule R6)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ActiveCell.FormulaR1C1 = _ 
"=SUMPRODUCT(R[-4]C:R[-1]C,R[-4]C[-5]:R[-1]C[-5])/SUM(R[-4]C[-5]:R[-1]C[-5])" 
Range("R7").Select
le problème est sur les lignes : les données sont calculées sur les mêmes colonne à chaque fois (X1 en M, X2 en R), il y a juste le nombre de ligne qui varie en fonction de la répétition du critère...

comment identifier les lignes (annotations en gras dans le code ci dessus......)

Je vous remercie