Salut Misen08, Andre13,
rien trouvé dans SORT qui me permette de faire cela donc je me suis amusé... ce qui m'a permis de découvrir d'autres petits trucs.
Tu double-cliques sur la 1ère cellule en haut à gauche du tableau à trier et la macro fait le reste.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData
'
iRow = Target.Row
iRow1 = Target.End(xlDown).Row + 1
iCol = Cells(iRow, Target.Column).End(xlToRight).Column
sColO = Split(Columns(Target.Column).Address(ColumnAbsolute:=False), ":")(1)
sCol = Split(Columns(iCol + 1).Address(ColumnAbsolute:=False), ":")(1)
sCol1 = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
'
tData = Range(sColO & iRow & ":" & sCol & iRow1 - 1).Value
Range(sColO & iRow).Resize(iRow1 - iRow, UBound(tData, 2) - 1).Delete
'
For x = 1 To UBound(tData, 2) - 1
For y = 2 To UBound(tData, 2) - 1
If UCase(tData(1, y)) < UCase(tData(1, y - 1)) Then
For Z = 1 To UBound(tData, 1)
tData(Z, UBound(tData, 2)) = tData(Z, y)
tData(Z, y) = tData(Z, y - 1)
tData(Z, y - 1) = tData(Z, UBound(tData, 2))
Next
End If
Next
Next
'
Range(sColO & iRow).Resize(iRow1 - iRow, UBound(tData, 2) - 1) = tData
Columns(sColO & ":" & sCol1).AutoFit
With ActiveSheet
.ListObjects.Add(xlSrcRange, .Range(sColO & iRow & ":" & sCol1 & iRow1 - 1), , xlYes).Name = "Tableau1"
.ListObjects("Tableau1").TableStyle = "TableStyleMedium5"
End With
'
End Sub
En l'état, le tableau créé portera toujours le même nom (Tableau1). Faudra prévoir de chercher le nom du tableau traité.
A+