Sub Traitement()
Dim Col As Integer, ColD As Integer, Dlig As Long, Lig As Long
Dim Val1 As Byte, Val2 As Byte, Val3 As Byte, vResult As Integer
Dim MyFMat As String, LigF As Long
' Récupérer le numéro de la denière ligne remplie
Dlig = Range("A" & Rows.Count).End(xlUp).Row
' Pour chaque ligne
For Lig = 5 To Dlig
' 1ère oclonne de destination
ColD = Range("AG1").Column
' Pour chaque colonne des données d'entrée
For Col = 1 To Range("AE1").Column - 2
' Récupérer les différente valeurs
Val1 = Cells(Lig, Col): Val2 = Cells(Lig, Col + 1): Val3 = Cells(Lig, Col + 2)
' Créer la formule matricielle
MyFMat = "SUMPRODUCT((AA22:AA29=" & Val1 & ")*(AB22:AB29=" & Val2 & ")*(AC22:AC29=" & Val3 & ")*ROW(AE22:AE29))"
LigF = 0: LigF = Application.Evaluate(MyFMat)
vResult = Range("AE" & LigF)
Cells(Lig, ColD).Value = vResult
ColD = ColD + 1
' Evaleur la formule matricielle
Next Col
Next Lig
End Sub