[COLOR="DarkSlateGray"][B]Sub test_5()
Dim i&, j&, k&, uL1&, uL2&, tmp#, oL1$, oL2$
Dim oLoy1, oLoy2, oInd, oInd1, oInd2, oInd3, oInd4, oRev
oLoy1 = Sheets("loyer").Range("K2:L2994").Value
oLoy2 = Sheets("loyer").Range("O1:DL1").Value
With WorksheetFunction
oInd1 = .Transpose(Sheets("indice").Range("A2:A2994"))
oInd2 = .Transpose(Sheets("indice").Range("B2:B2994"))
oInd3 = .Transpose(Sheets("indice").Range("C2:C2994"))
oInd4 = .Transpose(Sheets("indice").Range("D2:D2994"))
End With
uL1 = UBound(oLoy1, 1)
uL2 = UBound(oLoy2, 2)
ReDim oInd(1 To uL1)
For k = 1 To uL1
oInd(k) = oInd1(k) & "#" & oInd3(k) & "#" & oInd2(k)
Next
ReDim oRev(1 To 1, 1 To uL2)
With Application: .ScreenUpdating = 0: .Calculation = -4135: .EnableEvents = 0: End With
For i = 1 To uL1
oL1 = oLoy1(i, 1) & "#" & oLoy1(i, 2)
For j = 1 To uL2
oL2 = oL1 & "#" & oLoy2(1, j)
tmp = 0
For k = 1 To uL1
If oInd(k) = oL2 Then tmp = tmp + oInd4(k)
Next
oRev(1, j) = tmp
Next
Range(Cells(i + 1, 15), Cells(i + 1, 14 + uL2)).Value = oRev
Next
With Application: .EnableEvents = 1: .Calculation = -4105: .ScreenUpdating = 1: End With
End Sub[/B][/COLOR]