Bon dernier post, après j'arrête de m'exiter trop vite, finalement ça ne fonctionne pas, ça m'a juste caché une ligne sur 2.
Même zippé le fichier excel est trop gros pour que je le mette en lien.
Je recopie ma macro :
Sub tri()
'
' selection Macro
' Macro enregistrée le 01/07/2005 par user
' On désactive le rafraichissement de l'écran
Application.ScreenUpdating = False
' nbRow : nombre total de lignes
nbRow = Range('A1').CurrentRegion.Rows.Count
' on classe le tableau excel par plaque de voiture et date
Range('A1:G' & nbRow).Sort Key1:=Range('A2'), Order1:=xlAscending, Key2:= _
Range('B2'), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
' debut et fin : dates limites du filtre
debut = InputBox('Entrez la date de début de sélection')
fin = InputBox('Entrez la date de fin de sélection')
'on commence par récupérer dans un tableau les plaques à afficher
a_cacher = False 'détermine si il faut cacher ou non la cellule
Dim a_afficher()
ReDim a_afficher(nbRow) 'la taille maximale est nbRow
Dim num_cell As Integer 'variable de boucle sur le tableau excel
Dim indice_tab As Integer 'variable d'indice du tableau
indice_tab = 1
For num_cell = 2 To nbRow
Cells(num_cell, 1).Select
date_revision = Cells(num_cell, 2).Value 'date associée à la plaque considérée
If date_revision < fin And date_revision > debut Then
'on affiche et on stocke dans le tableau
a_afficher(indice_tab) = Cells(num_cell, 1).Value
indice_tab = indice_tab + 1
a_cacher = False
Else
a_cacher = True
End If
ActiveCell.Offset(1, 0).EntireRow.Hidden = a_cacher
'cette dernière ligne était sensée désactiver ou non l'affichage de la cellule (marche pas)
num_cell = num_cell + 1
Next
taille_tab = indice_tab - 1 'taille effective du tableau
'a_afficher contient maintenant la liste des plaques de voiture dont la date correspond
'à la sélection, elles sont de plus classées dans le même ordre(croissant) que sur la feuille excel
'il faut maintenant rajouter toutes les plaques étant dans le tableau mais dont l'affichage
'aurait été désactivé
'on parcourt toute la feuille excel pour rajouter les plaques qui nous intéressent
indice_tab = 1
Dim plaque
For num_cell = 2 To nbRow
Cells(num_cell, 1).Select
plaque = Cells(num_cell, 1).Value
If plaque < a_afficher(indice_tab) Then 'il faut progresser dans la feuille excel
num_cell = num_cell + 1
ElseIf plaque = a_afficher(indice_tab) Then 'il faut afficher cette ligne
ActiveCell.Offset(1, 0).EntireRow.Hidden = False
num_cell = num_cell + 1
Else 'il faut progresser dans le tableau
Do While plaque > a_afficher(indice_tab) And indice_tab < taille_tab
indice_tab = indice_tab + 1
Loop
End If
Next
'On retrie pour afficher par plaques d'abord et dates ensuite
Range('A1:G' & nbRow).Sort Key1:=Range('A2'), Order1:=xlAscending, Key2:= _
Range('B2'), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
'Pour améliorer, il faudrait ensuite que l'on puisse réafficher en triant par date d'évènement
'tout en regroupant par plaque de voiture (même principe que pour le tri)
' on réactive le rafraîchissement de l'écran
Application.ScreenUpdating = True
End Sub
Voilà, voilà dsl pour le spam du post