Sub test()
x = in_order_TableauBul([A1:B11].Value, 2)
[D1].Resize(UBound(x), UBound(x, 2)) = x
End Sub
Function in_order_TableauBul(tabl, col, Optional sens = 0)
Dim i#, e#, x#
If TypeName(tabl) = "Range" Then tabl = tabl.Value
ReDim temp(UBound(tabl, 2))
For i = 1 To UBound(tabl)
For e = i + 1 To UBound(tabl)
Select Case sens
Case 0
If tabl(e, col) > tabl(i, col) Then
For x = 1 To UBound(tabl, 2): temp(x) = tabl(i, x): tabl(i, x) = tabl(e, x): tabl(e, x) = temp(x): Next
End If
Case 1
If tabl(e, col) < tabl(i, col) Then
For x = 1 To UBound(tabl, 2): temp(x) = tabl(i, x): tabl(i, x) = tabl(e, x): tabl(e, x) = temp(x): Next
End If
End Select
Next
Next
in_order_TableauBul = tabl
End Function