Sub JJ1()
Dim I%, J%, K%, Tableau(), Total As Long, Comparer As Long
Dim Plage As Range, Résultat As Range, Valeurs As Range
Set Plage = Application.InputBox("Plage à trier ?", "Sélection de la base", , , , , , 8)
Set Résultat = Application.InputBox("1ère cellule de la base triée ?", "Sélection de l'emplacement du tri", , , , , , 8)
Set Résultat = Range(Résultat, Résultat.Offset(Plage.Rows.Count - 1, Plage.Columns.Count - 1))
Set Valeurs = Application.InputBox("Plage des valeurs ?", "Sélection des références", , , , , , 8)
Application.ScreenUpdating = False
ReDim Tableau(Plage.Rows.Count - 1)
For I = 0 To Plage.Rows.Count - 1
For J = 1 To Plage.Columns.Count
For K = 1 To Valeurs.Count
If Plage.Cells(I + 1, J) = Valeurs.Cells(K) Then Total = Total + 2 ^ (Valeurs.Count - K): Exit For
Next K
Next J
Tableau(I) = Total
Total = 0
Next I
For I = 1 To Plage.Rows.Count
Comparer = Application.WorksheetFunction.Large(Tableau, I)
For J = 0 To Plage.Rows.Count - 1
If Comparer = Tableau(J) Then Exit For
Next J
For K = 1 To Plage.Columns.Count
Résultat.Cells(I, K) = Plage.Cells(J + 1, K)
Next K
Next I
Application.ScreenUpdating = True
End Sub