Format - Filtrer avec une date

Bonjour ! Je vais mourir !

Ca fait 4 jours que j'essaie en vain de trier un tableau à l'aide d'une variable.

Je pense que ce qui pose problème est le format de cette variable.

Je ne peux malheureusement pas partager le fichier car il est interne à ma société.

Le besoin:

En gros, j'ai un tableau avec plein de donnée qui est alimenter tous les jours avec les données de la veille. Je souhaite automatiser le tri et l'extraction de ces informations par la pression d'un seul bouton. Pour celà, je dois filtrer la colonne des dates avec la date de la veille que je calcule dans une variable (le calcule ignore les week-ends et les jours fériés, ça aucun problème, ça marche très bien).

La subilité:

Ce tableau doit être alimenté tous les jours. Ca ne veut pas dire qu'il l'est forcément... Donc mon code doit détecter la date la plus récente du tableau et filtrer la colonne à cette date.

Le problème:

Je n'arrive pas à filtrer mon tableau en fonction de la date de la plus récente.

  • Que je mette la variable en Date, en String, en Double, ça ne change rien.
  • Que je modifie le format des cellules avant pour les reformater ensuite, pareil.

Mon idée:

Je pense que ça vient d'un problème de format. Ma variable est en dd/mm/yyyy et lorsque je crée une macro, le code qui ressort est en format m/dd/yyyy. J'ai donc essayé de modifier le format de ma variable, toujours pareil. J'ai utilisé une deuxième variable (une en string, l'autre en date), pareil. Le msgbox m'affiche toujours du dd/mm/yyyy au lieu de m/dd/yyyy.

Le message d'erreur: Qui est évidemment...

Erreur d'exécution '1004":

La méthode AutoFilter de la classe Range a échoué.

Etant donné que la seule chose qui change entre la macro et mon code, c'est la date qui est maintenant une variable, je pense savoir sans trop me tromper que le problème, c'est la variable...

[b]Mon code:[b]

Ce qui marche: Avant la mise en variable de la date.

ActiveSheet.Range("$A$1:$AK$1051").AutoFilter Field:=2, Criteria1:=Array(2, "4/17/2019")

Ce qui ne marche pas: Avec la date en variable.

Dim Max_Date As String
Dim Max_Date2 as Date

Max_Date = Application.WorksheetFunction.Max(Columns("B")) 'Max_Date = Date la plus récente

Max_Date2 = Format(Max_Date, "m / dd / yyyy")

ActiveSheet.Range("$A$1:$AK$1051").AutoFilter Field:=2, Criteria1:=Array(2, Max_Date2)

J'ai essayé plein de manière différentes de modifier le format, mais j'avoue ne plus m'en souvenir pour vous les mettre ici...

En espérant trouver de l'aide, une réponse, ou à défaut une épaule pour pleurer...

Bonjour,

As-tu essayé :

Max_Date = CDate(Application.WorksheetFunction.Max(Columns("B")))

En espèrant que cela t'aide ...

Bonjour !

J'ai fais appel au grand manitou d'Excel.

Effectivement le problème se trouvait dans le format de date et s'est résolu comme suit:

Dim Max_Date as String
Dim Max_Date2 As Date

        Max_Date = Application.WorksheetFunction.Max(Columns("B"))                  'Max_Date = Date la plus récente
        MsgBox Max_Date
        Max_Date2 = Format(Max_Date, "m / dd / yyyy")
        MsgBox Month(Max_Date2) & "/" & Day(Max_Date2) & "/" & Year(Max_Date2)

    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$Y$609").AutoFilter Field:=2, Operator:= _
    xlFilterValues, Criteria2:=Array(2, Month(Max_Date2) & "/" & Day(Max_Date2) & "/" & Year(Max_Date2))

Bonjour,

Ravi que tu n'aies pas à rechercher ... une épaule pour pleurer...

Voilà qui ajoute une bougie au gâteau

On verra plus tard pour la Fusée ...

Bonjour,

J'aurai vu un truc du genre :

Public Sub Filter_Data()
Dim dblMax As Double, strCriterion As String
Const COL As Long = 2
    With ActiveSheet
        dblMax = WorksheetFunction.Max(.Columns(COL))
        strCriterion = Format(dblMax, "mm/dd/yyyy")
        .Range("$A$1:$Y$609").AutoFilter _
                field:=COL, _
                Operator:=xlFilterValues, _
                Criteria2:=Array(2, strCriterion)
    End With
End Sub
Rechercher des sujets similaires à "format filtrer date"