Filtres dates ne fonctionne pas correctement

Bonjour à tous,

J'ai un fichier qui doit être trié par dates mais pour une raison inconnue les dates 2024 passent avant 1 date de 2023.

Mais sur un autre fichier ça me fait exactement la même chose avec la macro ci-dessous.

Est-ce qu'il y a un paramètre à modifier?

D'avance merci.

Patrick.

'Je filtre à présent la colonne A pour mettre les chiffres dans l'ordre décroissant:

    Range("A1:C1").Select
    Selection.AutoFilter
    Range("A1").Select
    ActiveWorkbook.Worksheets("VALIDE").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("VALIDE").AutoFilter.Sort.SortFields.Add Key:=Range _
        ("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("VALIDE").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1:C1").Select
    Selection.AutoFilter
    Range("A1").Select
17dates.xlsx (9.25 Ko)

Bonjour,

L'explication se trouve ici:

image

On voit "filtre textuel" ainsi que des dates qui ne sont rattachées à aucune année, autrement dit elles ne sont pas considérées comme des dates mais comme du texte, d'où le tri qui ne fonctionne pas bien...

Une solution pour s'assurer que toutes les dates soient bien considérées comme tel:

écrire 0 dans une cellule, copier la cellule, sélectionner toutes les dates, réaliser un collage spécial avec ces paramètres:

image

Excel va tenter d'ajouter 0 aux dates (qui en vrai sont stockées sous forme de nombre), forçant la conversion, Excel ne les considérera donc plus comme du texte.

A noter que si par exemple du texte est dans la sélection, comme "test", la valeur sera inchangée.

C'est important de préciser qu'on ne veut copier que la valeur pour éviter d'écraser les formats de cellule.

Bonjour,

Une autre solution :

Sub DatesAuFormatDate()

Dim I As Long, DerniereLigne As Long

  With Sheets("Feuil1")

       DerniereLigne = .Cells(.Rows.Count, 2).End(xlUp).Row
       For I = 2 To DerniereLigne
           .Cells(I, 2) = CDate(.Cells(I, 2))
       Next I

  End With

End Sub
Rechercher des sujets similaires à "filtres dates fonctionne pas correctement"