Sub Test2()
Application.ScreenUpdating = False 'Ecran figé
Application.Calculation = xlCalculationManual 'Calcul manuel
Dim Colonne%, NbLignes%, Taille%
Dim Crit1 As Range, Crit2 As Range, Crit3 As Range, Somme As Range
'Affectation la plage de cellules
With Sheets("Données")
NbLignes = .Cells(65000, 1).End(xlUp).Row 'Nombre de lignes
Set Crit1 = .Range("A2:A" & NbLignes) 'Critère1
Set Crit2 = .Range("B2:B" & NbLignes) 'Client
Set Crit3 = .Range("C2:C" & NbLignes) 'Date
Set Somme = .Range("D2:D" & NbLignes) 'Montant
End With
'Calcul par client
For Colonne = 2 To 12 Step 2 'Pour chaque client
Taille = Cells(65000, Colonne - 1).End(xlUp).Row 'Nombre de lignes
Range(Cells(2, Colonne), Cells(Taille, Colonne)).ClearContents 'Effacement données présentes
Calcul Taille, Colonne, NbLignes, Crit1, Crit2, Crit3, Somme 'Remplissage des données
Next
'Vide affectation
Set Crit1 = Nothing: Set Crit2 = Nothing: Set Crit3 = Nothing: Set Somme = Nothing
Application.Calculation = xlCalculationAutomatic 'Retour en calcul automatic
End Sub
Sub Calcul(Taille, Colonne, NbLignes, Crit1 As Range, Crit2 As Range, Crit3 As Range, Somme As Range)
For L = 2 To Taille 'Pour toutes les lignes
Cells(L, Colonne) = Application.SumIfs(Somme, Crit1, Cells(1, 1).Value, Crit2, Cells(1, Colonne).Value, Crit3, Cells(L, Colonne - 1).Value)
Next L
End Sub