Re,
Ce n'est pas D1 (un) mais Dl (l comme ligne)
Soit
Cells(i, "R").Value = Application.WorksheetFunction.SumIfs(Range(Cells(2, "P"), Cells(Dl, "P")), Range(Cells(2, "M"), Cells(Dl, "M")), Range("R1"), Range(Cells(2, "N"), Cells(Dl, "N")), Cells(i, "Q"))
Equivalent à
=SOMME.SI.ENS($P$2:$P$22;M2:M22;R1;N2:N22;Q2)
pour exemple en formule mais réitéré par boucle en vba
Cells(i, "S").Value = Application.WorksheetFunction.SumIfs(Range(Cells(2, "P"), Cells(Dl, "P")), Range(Cells(2, "M"), Cells(Dl, "M")), Range("S1"), Range(Cells(2, "N"), Cells(Dl, "N")), Cells(i, "Q"))
Equivalent à
=SOMME.SI.ENS($P$2:$P$22;M2:M22;S1;N2:N22;Q2)
pour exemple en formule mais réitéré par boucle en vba