Bonjour,

je travaille actuellement sur l'automisation de la présentation de données triées suivants 3 critères :
la date (A) / le lieu (B)/ les horaires de début (C)

Pour le tri par date pas de soucis, les données qui sont importées sont déjà triées.
il faut ensuite que je trie les données, qui ont la même date, suivant le lieu .
Au final ça donne ceci :
A date B lieu C heure
13/04/15 chap. 20rd 10:00
13/04/15 chap. 20rd 14:00
13/04/15 garage 14:00
27/04/15 chap. 20rd 10:00
05/05/15 chap. 20rd 10:00

mon problème c'est que je ne vois pas comment récupérer mon range, y appliquer les filtres et ensuite reprendre la recherche pour une autre plage de données.

dans ma tête,

1 boucle sur tout le tableau "For i=9 to dernière ligne"

à l'intérieur une boucle qui va tester chaque ligne par rapport à la suivante suivant la date pour connaitre la 1ere et la dernière ligne qui ont la même date et sur lesquelles on va travailler
quand la date n'est plus la même cette boucle s'arrête et je réalise les instructions de tri sur la plage déterminée
ensuite je reprends (???) la boucle à la ligne suivante, c'est là que je vois pas comment on fait ?

j'ai essayé avec do while mais ça s'arrête pas, en faisant pas à pas. So help me please ! y'a peut être une autre méthodeb ou logique ?

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
31
32
33
34
35
36
37
38
39
Sub Tridonnees()
Dim DernLigne As Long
Dim dl As Long 'dernier ligne avec même date
Dim cpt As Long 'compte le nombre de ligne de même date
Dim i As Long
 
    'réinitialise les variables
    dl = 8
    cpt = 0
    DernLigne = Feuil1.Range("B" & Rows.Count).End(xlUp).Row
 
For i = 9 To DernLigne
 
Do While Feuil1.Range("A" & i).Value = Feuil1.Range("A" & i + 1).Value
dl = dl + 1
cpt = cpt + 1
Loop
Feuil1.Range("B" & dl - cpt, "C" & dl).Select
 
 
Next i
 
    'macro enregistrée pour le tri   
    'Range("A9:F13").Select
    'ActiveWorkbook.Worksheets("planning").Sort.SortFields.Clear
    'ActiveWorkbook.Worksheets("planning").Sort.SortFields.Add Key:=Range("B9:B13" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   ' ActiveWorkbook.Worksheets("planning").Sort.SortFields.Add Key:=Range("C9:C13" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   ' With ActiveWorkbook.Worksheets("planning").Sort
        '.SetRange Range("A8:F13")
        '.Header = xlYes
        '.MatchCase = False
        '.Orientation = xlTopToBottom
        '.SortMethod = xlPinYin
        '.Apply
   ' End With
 
End Sub