Mais notre amie C@thy parle d'un tri et pas d'un filtre, sinon je suis Excel 2019 si tu peux m'expliquer comment m'y mettre, merci Staple1600 .R
J'ai mis une macro (juste pour l'exemple)
L'exemple ici filtre tous les dates d'un mois de janvierVB:Sub ExempleFiltre() ActiveSheet.Range("$A$1:$A$50").AutoFilter Field:=1, Criteria1:=xlFilterAllDatesInPeriodJanuary, Operator:=xlFilterDynamic End Sub
(et ce quelque ce soit l'année)
Mais évidemment, c'est plus intuitif en pilotant le filtre à la souris
Effectivement, ça y est aussi sur Excel 2010. Je ne connaissais pas cette commande Filtres chronologiques. Reste plus qu'à trouver comment s'y prendre pour que ce filtre ne tienne compte que du jour et du mois, et pas de l'année.Re
Je sélectionne une colonne contenant des dates
Puis Données/Filtrer => je clique sur la flèche du filtre pour dérouler les options du filtre et je choisis Filtres chronologiques
PETITE.VALEUR(A$1:A$3-DATE(ANNEE(A$1:A$3);1;1)+1;LIGNES($1:1))
TEXTE(ARRONDI(100*MOD(PETITE.VALEUR(MOIS(A$1:A$3)+JOUR(A$1:A$3)/100;LIGNES($1:1));1);0);"00")&"/"&TEXTE(ENT(PETITE.VALEUR(MOIS(A$1:A$3)+JOUR(A$1:A$3)/100;LIGNES($1:1)));"00")
DATE(1900;ENT(PETITE.VALEUR(MOIS(A$1:A$3)+JOUR(A$1:A$3)/100;LIGNES($1:1)));ARRONDI(100*MOD(PETITE.VALEUR(MOIS(A$1:A$3)+JOUR(A$1:A$3)/100;LIGNES($1:1));1);0))
INDEX(A$1:A$3;MAX(SI(PETITE.VALEUR(MOIS(A$1:A$3)+JOUR(A$1:A$3)/100;LIGNES($1:1))=MOIS(A$1:A$3)+JOUR(A$1:A$3)/100;LIGNE($1:$3))))
=SIERREUR(INDEX(A$2:A$7;EQUIV(PETITE.VALEUR(NB.SI(B$2:B$7;"<"&B$2:B$7);LIGNES(C$2:C2));NB.SI(B$2:B$7;"<"&B$2:B$7);0));"")
=SIERREUR(INDEX(A$2:A$9;EQUIV(PETITE.VALEUR(SI(ESTNUM(A$2:A$9);NB.SI(B$2:B$9;"<"&B$2:B$9));LIGNES(C$2:C2));NB.SI(B$2:B$9;"<"&B$2:B$9);0));"")
=SIERREUR(INDEX(A$2:A$8;EQUIV(PETITE.VALEUR(TEXTE(A$2:A$8;"mmdd")+ANNEE(A$2:A$8)/9^9;LIGNES($2:2));TEXTE(A$2:A$8;"mmdd")+ANNEE(A$2:A$8)/9^9;0));"")
Sub TriMoisJour()
Dim tablo, a(), b(), i&, dat, n&
tablo = [A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
ReDim a(UBound(tablo))
ReDim b(UBound(tablo))
For i = 2 To UBound(tablo)
dat = tablo(i, 1)
If IsDate(dat) Then
a(n) = Format(dat, "mm.dd.yyyy")
b(n) = CDbl(dat) 'convertit en nombre
n = n + 1
End If
Next
tri a, b, 0, n - 1
'---restitution---
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
With [B2] '1ère cellule de destination, à adapter (ce peut être A2)
If n Then .Resize(n) = Application.Transpose(b) 'Transpose est limitée à 65536 lignes
.Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
Sub tri(a, b, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
temp = b(g): b(g) = b(d): b(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub