MERCI à tousBonsoir @dysorthographie ,@TooFatBoy
@dysorthographie
Ton code et tri_bis donne le même résultat, non ?
(C'est juste pour savoir)
Normalement, @KTM, si il utilise Excel 2016, peut utiliser la syntaxe Sort apparu avec Excel 2007.
PS: J'ai testé ton code sur Office 365 64 bits.
Sub tri()
Dim dl As Long
dl = Range("B" & Rows.Count).End(xlUp).Row
Range("B2:M" & dl).Select
With Worksheets("Feuil1")
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=Range("B3:B" & dl) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add2 Key:=Range("E3:E" & dl) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add2 Key:=Range("G3:G" & dl) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add2 Key:=Range("I3:I" & dl) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("B2:M" & dl)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
Sub tri_ter()
Dim dl&, I%, col, F As Worksheet: Set F = Worksheets("Feuil1")
dl = Cells(Rows.Count, 2).End(xlUp).Row - 2: col = Array(2, 5, 7, 9)
F.Sort.SortFields.Clear
For I = LBound(col) To UBound(col)
F.Sort.SortFields.Add2 Key:=Cells(3, col(I)).Resize(dl), SortOn:=0, Order:=1, DataOption:=0
With F.Sort
.SetRange Range("B2:M78")
.Header = xlYes: .MatchCase = False
.Orientation = xlTopToBottom: .SortMethod = xlPinYin
.Apply
End With
Next
End Sub
a priori c'est pareilRe
@dysorthographie
Moi, je demandais juste si le résultat est le même
en mode SQL
ou en mode Tri Excel (version 2007 et plus)
PS: Je garde précieusement ton module ModuleRequeteurUniversel dans ma besace VBA
Array("B","E","G","I")
PS: Je garde précieusement ton module ModuleRequeteurUniversel dans ma besace VBA
Sub Tri()
Dim Plage As Range, Col, C
With ActiveSheet
Set Plage = .Cells(2, 2).CurrentRegion
Col = Array(1, 6, 8)
With .Sort
.SortFields.Clear
For Each C In Col
.SortFields.Add Key:=Plage.Columns.Item(C), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
Next
.SetRange Plage: .Header = xlYes: .MatchCase = False: .Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
End With
End With
Set Plage = Nothing
End Sub