Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Simplifier une macro de tri !

1 réponse
Avatar
Domi
Bonjour à tous,
Je passe de 2003 à 2007... pas evident !
Avec l'enregistreur j'ai fait cette macro qui me permet de trier un tableau
sur 3 critères (la ligne de titres est la 6)
1°)Y a t -il moyen d'alléger ce code ? sachant que j'ai nommé mon tableau
(avec les titres) "DATA" et que je veux trier les données sur A6/B6/C6
Merci pour votre aide
Domi


Sub Macro2()
'
' Macro2 Macro
'

'
Range("A6:I6").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Add
Key:=Range("A7:A102"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Add
Key:=Range("B7:B102"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Add
Key:=Range("C7:C102"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("LOGINS").Sort
.SetRange Range("A6:I102")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

1 réponse

Avatar
Daniel.C
Bonjour.
Non testé, deux méthodes, l'une avec la méthode XL2003 et l'autre avec
la méthode XL2007 :

Sub Tri2007()
Dim Ligne As Long
Ligne = [I6].End(xlDown).Row
With ActiveWorkbook.Worksheets("LOGINS")
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A7:A" & Ligne),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("B7:B" & Ligne),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("C7:C" & Ligne),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
With ActiveWorkbook.Worksheets("LOGINS").Sort
.SetRange Range("A6:I" & Ligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Sub Tri2003()
Dim Ligne As Long
Ligne = [I6].End(xlDown).Row
With ActiveWorkbook.Worksheets("LOGINS")
Range("A6", [I6].End(xlEnd)).Sort Key1:=[A6], key2:=[B6],
key3:=[C6], Header:=xlYes
End With
End Sub

Daniel

Bonjour à tous,
Je passe de 2003 à 2007... pas evident !
Avec l'enregistreur j'ai fait cette macro qui me permet de trier un tableau
sur 3 critères (la ligne de titres est la 6)
1°)Y a t -il moyen d'alléger ce code ? sachant que j'ai nommé mon tableau
(avec les titres) "DATA" et que je veux trier les données sur A6/B6/C6
Merci pour votre aide
Domi


Sub Macro2()
'
' Macro2 Macro
'

'
Range("A6:I6").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Add
Key:=Range("A7:A102"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Add
Key:=Range("B7:B102"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("LOGINS").Sort.SortFields.Add
Key:=Range("C7:C102"), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("LOGINS").Sort
.SetRange Range("A6:I102")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub