Sub Trier(EtiquetteColonne As String)
Dim plgToSort As Range
Dim sortKey As Range
Dim idx As Variant
With ActiveWorkbook.Worksheets("Feuil1")
.Unprotect
' Définition de la plage à trier
' Tableau de la cellule C4
With .Range("C4").CurrentRegion
'
' Chercher l'EtiquetteColonne de colonne dans la ligne 1 du tableau
idx = Application.Match(EtiquetteColonne, .Rows(1), 0)
'
' Sortir si l'EtiquetteColonne passée en paramètre n'a pas été trouvée
If IsError(idx) Then
MsgBox "L'Etiquette de colonne " & EtiquetteColonne & " n'a pas été trouvée dans la ligne 1 du tableau!", _
vbExclamation, "Tri du tableau"
Exit Sub
Else
Set sortKey = .Cells(1, idx)
End If
'
' Sans l'EtiquetteColonne
Set plgToSort = .Offset(1).Resize(.Rows.Count - 1)
End With
' Prépartion du tri
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=sortKey, _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
With .Sort
.SetRange plgToSort
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
Sub ALPHA()
Trier "NOM"
End Sub
Sub ECROU()
Trier "ECROU"
End Sub