Simplification code tri
B
Bonjour,
En utilisant l'enregistreur de macro j'ai ce code de tri qui fonctionne. J'aurai voulu savoir s'il est possible de le simplifier.
' TRI Macro
'
'
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 1
Range("D9:BF12").Select
ActiveWorkbook.Worksheets("Planning").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Planning").Sort.SortFields.Add Key:=Range( _
"BE9:BE12"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"SGC,SGT,CLC,CAL,AV1,AVT", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Planning").Sort.SortFields.Add Key:=Range( _
"BF9:BF12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Planning").Sort
.SetRange Range("D9:BF12")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 1Merci.
M
Bonjour,
Avec cette méthode, on peut juste un peu compacter... Ton ordre personnalisé ne permet pas de changer de méthode.
' TRI Macro
With Worksheets("Planning").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("BE9:BE12"), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:="SGC,SGT,CLC,CAL,AV1,AVT", DataOption:=xlSortNormal
.SortFields.Add Key:=Range("BF9:BF12"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.SetRange Range("D9:BF12")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End WithTu pourrais te passer de DataOption, MatchCase, et Orientation, si tu ne les changes jamais...
Cordialement.
B
Merci MFerrand, encore une fois c'est parfait.
MFerrand a écrit :Tu pourrais te passer de DataOption, MatchCase, et Orientation, si tu ne les changes jamais...
La seule chose qui peut changer c'est la dernière ligne.
Encore merci.