Tri sur plusieurs colonnes excel 2007
Le
kristof44

Bonjour,
Je souhaite faire un tri sur plusieurs colonnes, j'ai généré le code =
suivant qui fonctionne mais je pense qu'il y a beaucoup mieux à faire "pl=
us propre".
Que me conseillez vous ?
Range("Y1").Formula = "=CONCATENATE(RC[-24],RC[-23],RC[-22],RC[-10]=
)"
Range("Y1").Select
Selection.Copy
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("Y:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski=
pBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("Y=
1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A2").SpecialCells(xlLastCell)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Selection.Delete Shift:=xlToLeft
Merci à vous.
Je souhaite faire un tri sur plusieurs colonnes, j'ai généré le code =
suivant qui fonctionne mais je pense qu'il y a beaucoup mieux à faire "pl=
us propre".
Que me conseillez vous ?
Range("Y1").Formula = "=CONCATENATE(RC[-24],RC[-23],RC[-22],RC[-10]=
)"
Range("Y1").Select
Selection.Copy
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("Y:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski=
pBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("Y=
1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A2").SpecialCells(xlLastCell)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Selection.Delete Shift:=xlToLeft
Merci à vous.
| Que me conseillez vous ?
D'apprendre à poser une question.
A ) Quel est le nom de l'onglet sur lequel tu travailles
B ) Quelle est l'étendue de la plage de cellules sur laquelle
tu veux effectuer un tri. (Son adresse)
C ) Est-ce que cette plage a comme première ligne des
étiquettes de colonnes? OUI ou NON?
D ) Sur quelle colonne de cette plage veux-tu effectuer un tri?
E ) Est-ce que le tri doit respecter un ordre particulier?
De trouver du code qui ne fonctionne pas, ce n'est pas trop difficile,
par contre, deviner ce que le demandeur désire à partir d'un
code qui ne fonctionne pas, c'est une tâche titanesque!
MichD
---------------------------------------------------------------
Désolé pour le manque de précisions.
Actuellement l'onglet n'a pas de nom Feuil1.
La plage concernée va de la cellule A1 à la dernière cellule du table au.
La dernière colonne étant X.
Le tableau ayant des entêtes de colonnes sur la première ligne .
Le tri devant s'effectuer en ordre croissant suivant les colonnes A B C et O.
Le nombre de lignes est variable.
précise ta pensée sur le type de tri que tu désires!
Ceci s'applique sur une version d'Office 2007 ou plus récent!
'-------------------------------------------------------
Sub test()
Dim Rg As Range, Sh As Worksheet
Set Sh = Worksheets("Feuil2")
With Sh
DerLig = .Range("A:X").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:X" & DerLig)
End With
With Sh
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("A2:A" & DerLig), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("B2:B" & DerLig), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("C2:C" & DerLig), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("O2:O" & DerLig), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Rg
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
'-------------------------------------------------------
MichD
---------------------------------------------------------------
Cela s'applique à une version 2007. Je n'ai pas l'habitude de travailler avec.
Beaucoup de choses ont changées (et heureusement) depuis 2003. Notamment au niveau des possibilités de tris.
Ta réponse serait différente pour une version 2010 ?
****NON.
MichD
---------------------------------------------------------------