Filtrer des données suivant une colonne DATE
Ant049
Messages postés
157
Statut
Membre
-
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à :
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,
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:
- Filtrer des données suivant une colonne DATE
- Fuite données maif - Guide
- Déplacer une colonne excel - Guide
- Suivi des modifications word - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
1 réponse
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..
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