Filtrer des données suivant une colonne DATE

Fermé
Ant049 Messages postés 154 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 9 septembre 2016 - 31 août 2016 à 12:56
Ant049 Messages postés 154 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 9 septembre 2016 - 31 août 2016 à 14:08
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,


A voir également:

1 réponse

Ant049 Messages postés 154 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 9 septembre 2016 22
31 août 2016 à 14:08
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