Filtrer des données suivant une colonne DATE

Ant049 Messages postés 157 Statut Membre -  
Ant049 Messages postés 157 Statut Membre -
Bonjour,

Avec un de mes fichiers, je suis confronté à un problème dont je ne comprends pas le sens.
Pour introduire mon fichier :
Dans une feuille, j'ai des lignes qui correspondent à l'arrivée de composants (8 colonnes : nom, date, heure, reference, ....).
Via VBA, je souhaite extraire certaines lignes de cette feuille en fonction de différents critères.
Jusque là tout va bien !

Le problème se pose sur le critère de date. En effet, lorsque je veux filtrer suivant la date (égal à, antérieur, postérieur, entre), j'utilise un code comme celui là :


StartDate = CDate(Format(TextBox2.Value, "dd/mm/yyyy"))
If TextBox3.Value <> "" Then
EndDate = CDate(Format(TextBox3.Value, "dd/mm/yyyy"))
End If
If ComboBox3.Value = "=" Then
ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:=Format(StartDate, "dd/mm/yyyy"), Operator:=xlAnd
ElseIf ComboBox3.Value = "<" Then
ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:="<=" & Format(StartDate, "dd/mm/yyyy"), Operator:=xlAnd
ElseIf ComboBox3.Value = ">" Then
ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:=">=" & Format(StartDate, "dd/mm/yyyy"), Operator:=xlAnd
ElseIf ComboBox3.Value = "between" Then
ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:="<=" & Format(EndDate, "dd/mm/yyyy"), Operator:=xlAnd, Criteria2:=">=" & Format(StartDate, "dd/mm/yyyy")


Ca fonctionne pour le "égal à", mais pas pour les autres.
En utilisant le défilement pas à pas, je me rends compte qu'il fait tout correctement mais qu'il ne comprend pas les données que je place dans le filtre..
Le pire dans tout ça c'est que lorsqu'il applique le filtre et que cela ne marche pas, je vais voir ce qu'il a mis et tout est bon ! je refais "ok" manuellement et ca marche...!

Alors pourquoi cela ne marche pas quand je passe par VBA ?

Merci pour votre aide

Cdt,



--
Quand le sage montre la lune, l'imbécile regarde le doigt

1 réponse

  1. Ant049 Messages postés 157 Statut Membre 22
     
    Finalement j'ai réussi à trouver la solution !
    Cependant, j'avoue que je ne la comprends pas totalement...
    J'ai changé le format pour mettre ça en MM/DD/YY. Par contre, pour le filtre "égal à", j'ai du garder l'autre format, va savoir pourquoi..


    StartDate = CDate(Format(TextBox2.Value, "mm/dd/yy"))
    If TextBox3.Value <> "" Then
    EndDate = CDate(Format(TextBox3.Value, "mm/dd/yy"))
    End If

    If ComboBox3.Value = "=" Then
    ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:=Format(StartDate, "dd/mm/yyyy"), Operator:=xlAnd
    ElseIf ComboBox3.Value = "<" Then
    ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:="<=" & Format(StartDate, "mm/dd/yy"), Operator:=xlAnd
    ElseIf ComboBox3.Value = ">" Then
    ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:=">=" & Format(StartDate, "mm/dd/yy"), Operator:=xlAnd
    ElseIf ComboBox3.Value = "between" Then
    ActiveSheet.Range("$A$1:$H$1").AutoFilter Field:=2, Criteria1:="<=" & Format(EndDate, "mm/dd/yy"), Operator:=xlAnd, Criteria2:=">=" & Format(StartDate, "mm/dd/yy")
    End If
    End If

    0