Sub Tri()
Dim DL As Long, Plage As Range
' PS le critere trie est a mettre dans le code a CustomOrder => CustomOrder:="E,P,M,X,G"
' Il faut bien cibler la feuille et la plage dans le code
With Sheets(1)
DL = .Columns("A:C").Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).Row 'Derniere ligne de la colonne A:C
Set Plage = .Range("A2:C" & DL)
Application.ScreenUpdating = False
With .Sort
.SortFields.Clear
.SortFields.Add Key:=Plage.Columns.Item(2), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="E,P,M,X,G", DataOption:=xlSortNormal ' Tri sur la 2eme colonne de la plage
.SortFields.Add Key:=Plage.Columns.Item(3), Order:=xlAscending, DataOption:=xlSortNormal ' Tri sur la 3eme colonne de la plage
.SetRange Plage: .Header = xlYes: .MatchCase = False: .Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
End With
End With
Application.ScreenUpdating = True
Set Plage = Nothing
End Sub
' code pour le test afin de remettre la donnée rapidement
Sub RecoverData()
VA = Feuil2.Cells(1).CurrentRegion.Value
Feuil1.Cells(1).Resize(UBound(VA), UBound(VA, 2)).Value = VA
End Sub