Sub Tri_Hrztl()
'Tri horizontal d'une plage de la feuil1 vers une plage de la feuil2
Dim RgS As Range, RgC As Range, Adr$, Tb, NbL As Integer, NbC As Integer, i As Integer, j As Integer, tbl()
Set RgS = Feuil1.[B2:D26] 'Plage source
Set RgC = Feuil2.[C2:E26] 'Plage Cible
Tb = RgS.Value 'Tableau des valeurs à trier
Adr = "'" & Feuil1.Name & "'!" & RgS.Address 'Adresse de la plage à trier
NbL = UBound(Tb, 1): NbC = UBound(Tb, 2) 'Limites du tableau des valeurs
For i = 1 To NbL
ReDim tbl(1 To NbC) 'Tableau temporaire (1 ligne)
For j = 1 To NbC
'rang de l'élément dans la ligne du tableau des valeurs - nb éléments déjà présents dans le tableau temporaire
Place = Evaluate(NbC & "-COUNTIF(Index(" & Adr & "," & i & ",0),"">""&""" & Tb(i, j) & """)") - _
Evaluate("SUM(N({""" & Join(tbl, """,""") & """}=""" & Tb(i, j) & """))")
tbl(Place) = Tb(i, j)
Next j
For j = 1 To NbC
'Remplacement dans le tableau des valeurs
If Not IsEmpty(tbl(j)) Then Tb(i, j) = tbl(j)
Next
Next i
RgC.Value = Tb
End Sub