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

Tri sur plusieurs colonnes excel 2007

6 réponses
Avatar
kristof44
Bonjour,
Je souhaite faire un tri sur plusieurs colonnes, j'ai g=E9n=E9r=E9 le code =
suivant qui fonctionne mais je pense qu'il y a beaucoup mieux =E0 faire "pl=
us propre".
Que me conseillez vous ?

Range("Y1").Formula =3D "=3DCONCATENATE(RC[-24],RC[-23],RC[-22],RC[-10]=
)"
Range("Y1").Select
Selection.Copy
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.Paste
Application.CutCopyMode =3D False
Columns("Y:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=3DxlPasteValues, Operation:=3DxlNone, Ski=
pBlanks _
:=3DFalse, Transpose:=3DFalse
Application.CutCopyMode =3D False
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=3DRange("Y=
1"), _
SortOn:=3DxlSortOnValues, Order:=3DxlAscending, DataOption:=3D _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A2").SpecialCells(xlLastCell)
.Header =3D xlNo
.MatchCase =3D False
.Orientation =3D xlTopToBottom
.SortMethod =3D xlPinYin
.Apply
End With
Selection.Delete Shift:=3DxlToLeft

Merci =E0 vous.

6 réponses

Avatar
kristof44
En fait ... ça ne fonctionne pas :( ça ne plante pas ... Mais le tri ne se'effectue pas :( Besoin d'aide. Merci.
Avatar
MichD
Bonjour,

| 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
---------------------------------------------------------------
Avatar
kristof44
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.
Avatar
MichD
Tu veux quelque chose du genre sinon
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
---------------------------------------------------------------
Avatar
kristof44
Merci MichD, cela me convient tout à fait.
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 ?
Avatar
MichD
| Ta réponse serait différente pour une version 2010 ?

****NON.



MichD
---------------------------------------------------------------