Bonjour,
Sur une feuille j'ai un tableau de 9 colonnes que je voulais trier sur base de
de la première colonne qui est de type Date lles autres colonnes sont de type
numérique
Je suis partis du code provenant de l'enregistrement d'une macro que j'ai adapté et qui fonctionne correctement.
En fouinant dans l'aide en ligne et sur le forum j'ai un autre code que j'ai testé sur une autre plage de données de même structure et qui fonctionne également correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Sub TrierPlage() Dim Ws As Worksheet, MaPlage As Range, PlageTri As Range Dim DerLgn As Byte '*** Initialiser Set Ws = Worksheets("CrsDevises") DerLgn = Ws.[B6].End(xlDown).Row Set MaPlage = Ws.Range("B6:J" & DerLgn) Set PlageTri = Ws.Range("B6:B" & DerLgn) '*** Trier la plage Ws.Sort.SortFields.Clear Ws.Sort.SortFields.Add Key:=PlageTri, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Ws.Sort .SetRange MaPlage .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With '*** Libère mémoire Set Ws = Nothing Set MaPlage = Nothing Set PlageTri = Nothing End Sub
La question que je me pose quel est le bon code a utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub Test_Trier() Dim Ws As Worksheet, MaPlage As Range, PlageTri As Range Dim DerLgn As Byte '*** Initialiser Set Ws = Worksheets("CrsDevises") DerLgn = Ws.[A42].End(xlDown).Row Set MaPlage = Ws.Range("A42:J" & DerLgn) '*** Colonne données < Dates > Set PlageTri = Ws.Range("A42:A" & DerLgn) '*** Trier la plage MaPlage.Sort PlageTri, xlAscending '*** Libère mémoire Set Ws = Nothing Set MaPlage = Nothing Set PlageTri = Nothing End Sub
Merci d'avance de vos conseils judicieux et retours d'expérience
Bonne journée
Partager