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 ?
En fait ... ça ne fonctionne pas :( ça ne plante pas ... Mais le tri ne se'effectue pas :( Besoin d'aide. Merci.
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!
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!
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!
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.
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.
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.
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 '-------------------------------------------------------
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
'-------------------------------------------------------
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 '-------------------------------------------------------
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 ?
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 ?
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 ?
MichD
| Ta réponse serait différente pour une version 2010 ?