Sub TriTableau2D2Critères()
Dim clé() As String, index() As Long
a = [A2:D7].Value
Dim b()
ReDim b(LBound(a) To UBound(a), LBound(a, 2) To UBound(a, 2))
Set oSortedList = CreateObject("System.Collections.Sortedlist")
For i = LBound(a) To UBound(a)
oSortedList.Add a(i, 1) & a(i, 2), i
Next i
For lig = LBound(a) To UBound(a)
For col = LBound(a, 2) To UBound(a, 2)
b(lig, col) = a(oSortedList.GetByIndex(lig - 1), col)
Next col
Next lig
[H2].Resize(UBound(b), UBound(b, 2)).Value2 = b
End Sub