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

Tri de données

3 réponses
Avatar
JP
Bonjour,

Toujours pour le meme projet, j'aurai encore besoin de vos lumi=E8res.
Quand j'effectue un tri de donn=E9es j'utilise l'enregistreur de macro mais=
dans la situation pr=E9sente ca ne fait pas l'affaire.

La macro de tri se trouve dans un module et je souhaiterai pouvoir l'execut=
er de n'importe quelle feuille. Le tri se fait sur 3 niveaux.
Les feuilles se nomment POULE A, POULE B,..., POULE H.
La macro actuelle est:

' Copie des plages de r=E9sultats points/sets et matches
Union(Range("BW35:BW42"), Range("AX35:AX42"), Range("V35:V42")).Cop=
y
Range("Q28").Select
Selection.PasteSpecial Paste:=3DxlPasteValues, Operation:=3DxlNone,=
SkipBlanks _
:=3DFalse, Transpose:=3DFalse
'-------------------------------------------------------------------------=
-----
' Tri des donn=E9es pour la recherche du rang
Range("P28:S35").Select
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add Key:=3DRange("=
Q28:Q35" _
), SortOn:=3DxlSortOnValues, Order:=3DxlDescending, DataOption:=3Dx=
lSortNormal
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add Key:=3DRange("=
R28:R35" _
), SortOn:=3DxlSortOnValues, Order:=3DxlDescending, DataOption:=3Dx=
lSortNormal
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add Key:=3DRange("=
S28:S35" _
), SortOn:=3DxlSortOnValues, Order:=3DxlDescending, DataOption:=3Dx=
lSortNormal
With ActiveWorkbook.Worksheets("POULE A").Sort
.SetRange Range("P28:S35")
.Header =3D xlGuess
.MatchCase =3D False
.Orientation =3D xlTopToBottom
.SortMethod =3D xlPinYin
.Apply
End With


Comment puis-je simplifier cela?

Merci pour votre aide

JP

3 réponses

Avatar
Jacquouille
Bonjour
Ne pourrions-nous déménager les poules vers le Perso.xls?
De cette manière, n'importe quel Goupil aurait accès ....



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


Bonjour,

Toujours pour le meme projet, j'aurai encore besoin de vos lumières.
Quand j'effectue un tri de données j'utilise l'enregistreur de macro mais
dans la situation présente ca ne fait pas l'affaire.

La macro de tri se trouve dans un module et je souhaiterai pouvoir
l'executer de n'importe quelle feuille. Le tri se fait sur 3 niveaux.
Les feuilles se nomment POULE A, POULE B,..., POULE H.
La macro actuelle est:

' Copie des plages de résultats points/sets et matches
Union(Range("BW35:BW42"), Range("AX35:AX42"), Range("V35:V42")).Copy
Range("Q28").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
'------------------------------------------------------------------------------
' Tri des données pour la recherche du rang
Range("P28:S35").Select
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add
Key:=Range("Q28:Q35" _
), SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add
Key:=Range("R28:R35" _
), SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add
Key:=Range("S28:S35" _
), SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("POULE A").Sort
.SetRange Range("P28:S35")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


Comment puis-je simplifier cela?

Merci pour votre aide

JP
Avatar
DanielCo
Ce code trie la feuille active (non testé) :

' Tri des données pour la recherche du rang
Dim Ligne As Long
With ActiveSheet
Ligne = .Cells(.Rows.Count, 16).End(xlUp).Row
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("Q28:Q" & Ligne), _
SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("R28:R" & Ligne), _
SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("S28:S" & Ligne), _
SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
With .Sort
.SetRange Range("P28:S" & Ligne)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With

Daniel


Bonjour,

Toujours pour le meme projet, j'aurai encore besoin de vos lumières.
Quand j'effectue un tri de données j'utilise l'enregistreur de macro mais
dans la situation présente ca ne fait pas l'affaire.

La macro de tri se trouve dans un module et je souhaiterai pouvoir l'executer
de n'importe quelle feuille. Le tri se fait sur 3 niveaux. Les feuilles se
nomment POULE A, POULE B,..., POULE H. La macro actuelle est:

' Copie des plages de résultats points/sets et matches
Union(Range("BW35:BW42"), Range("AX35:AX42"), Range("V35:V42")).Copy
Range("Q28").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _ :úlse, Transpose:úlse

'------------------------------------------------------------------------------
' Tri des données pour la recherche du rang Range("P28:S35").Select
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add
Key:=Range("Q28:Q35" _ ), SortOn:=xlSortOnValues,
Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("POULE A").Sort.SortFields.Add Key:=Range("R28:R35"
_ ), SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal ActiveWorkbook.Worksheets("POULE
A").Sort.SortFields.Add Key:=Range("S28:S35" _ ),
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("POULE A").Sort .SetRange
Range("P28:S35") .Header = xlGuess .MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


Comment puis-je simplifier cela?

Merci pour votre aide

JP
Avatar
JP
Bonjour,

Propre, net, merci à vous deux.
La solution de DanielCo va très bien.

JP