Sub Tri()
Const source = "a3", nbrCol = 4, Cible = "f3"
Dim t, i&, j&, k&, n&, nlig&
Application.ScreenUpdating = False
i = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
t = Range(source).Resize(i, 4)
ReDim lesVal(1 To UBound(t) * UBound(t, 2)): ReDim lesAdr(1 To UBound(t) * UBound(t, 2))
For i = 1 To UBound(t): For j = 1 To UBound(t, 2)
If t(i, j) <> "" Then n = n + 1: lesVal(n) = t(i, j): lesAdr(n) = Range(source)(i, j).Address(0, 0)
Next j, i
QuickSort lesVal, 1, n, lesAdr
nlig = Int(n / nbrCol): If nbrCol * nlig < n Then nlig = nlig + 1
Range(Range(Cible), Range(Cible).End(xlDown)).Resize(, nbrCol).Clear
For i = 1 To n
Range(lesAdr(i)).Copy Range(Cible).Cells(1 + ((i - 1) Mod nlig), 1 + Int((i - 1) / nlig))
Next i
End Sub
Sub QuickSort(a, gauc, droi, aa) ' d'après Jacques Boisgontier
' Voir le code dans le classeur joint...
End Sub