AutoFilter Date ne fonctionne pas
Bonjour à tous,
Je reviens vers vous car j'ai un problème étrange avec la fonction AutoFilter en VBA. Mon objectif est de filtrer une plage de données pour ne sélectionner que celles comprises entre deux dates, donc rien de bien compliquer en utilisant l'enregistreur.
Donc j'enregistre le fait de filtrer entre deux dates et ensuite j'exécute la Macro pour tester si elle fonctionne et c'est là que ça coince. Premièrement la première date sélectionnée est inversée au niveau du jour et du mois, j'ai donc changé le format dans ma Macro mais le problème persiste.
Quand je lance cette dernière, en allant sur ma feuille Excel et que j'ouvre Filtre -> Filtres chronologiques -> Entre... les dates sont correctement indiquées dans les cases "postérieur ou égal au" et "antérieur ou égal au" mais ce n'est que si je valide manuellement que mes données se font filtrer mais pas par la Macro automatiquement.
La finalité serait d'avoir un AutoFilter qui prendra deux dates pouvant varier et indiquer dans une cellule pour ensuite filtrer. J'ai bien trouvé le code pour faire tout cela mais si ça bloque déjà sur l'enregistreur je ne peux pas aller plus loin. Ci-joint un fichier qui a été créé pour expliciter mes propos.
Si quelqu'un saurait d'où provient ce blocage, je serai ravi d'en connaître les raisons ! Merci d'avance pour ceux qui pourront m'apporter leur aide.
Bonjour,
Teste comme ceci
ActiveSheet.Range("$A$2:$F$40").AutoFilter Field:=4, Criteria1:= _
">=06/01/2022", Operator:=xlOr, Criteria2:="<=30/06/2022"Bonjour,
Pour le principe :
Sub Macro1()
Dim startDate As String, endDate As String
startDate = Format(DateSerial(2022, 6, 1), "mm/dd/yyyy")
endDate = Format(DateSerial(2022, 6, 30), "mm/dd/yyyy")
ActiveSheet.Range("$A$1:$F$40").AutoFilter Field:=4, Criteria1:= _
">=" & startDate, Operator:=xlAnd, Criteria2:="<=" & endDate
End SubLes dates doivent sous forme de texte avec un format date américain.
Sinon, il faut penser à mettre les données sous forme de tableau structuré (dynamique).
Cdlt.
Bonjour,
Le travail sur les Dates avec Excel, c'est pas ce qu'il y a de plus simple...
Pour Excel, une date équivaut à un nombre (1 étant le 01/01/1900, donc aujourd'hui, 17/08/2022, ça correspond au nombre 44790)
En convertissant une date en nombre, on peut obtenir ce que tu désires...
ActiveSheet.Range("$A$1:$F$40").AutoFilter Field:=4, Criteria1:= _
">=" & CLng(CDate("06/01/2022")), Operator:=xlAnd, Criteria2:="<=" & CLng(CDate("30/06/2022"))Pas simple, mais fonctionnel... (nota, tu peux mettre une date dans une cellule, et en faire référence ainsi :)
ActiveSheet.Range("$A$1:$F$40").AutoFilter Field:=4, Criteria1:= _
">=" & CLng(Range("I1")), Operator:=xlAnd, Criteria2:="<=" & CLng(Range("J1"))ou encore :
ActiveSheet.Range("$A$1:$F$40").AutoFilter Field:=4, Criteria1:= _
">=" & Range("I1").Value2, Operator:=xlAnd, Criteria2:="<=" & Range("J1").Value2Bonne journée
Et pour anticiper une éventuelle question sur Value et Value2, tiré de µSoft :
La seule différence entre cette propriété et la propriété Value est que la propriété Value2 n’utilise pas les types de données Monétaire et Date . Vous pouvez retourner des données de ce type sous forme de nombres à virgule flottante en utilisant le type de données Double.
Tout d'abord merci à tous les trois pour votre réponse rapide !
Je les ai toutes testées et elles fonctionnent parfaitement c'est top merci
Je vais continuer avec celle de @cousinhub pour pouvoir appliquer des dates variables mais du coup j'ai un peu mieux compris le fonctionnement des dates grâce à vos explications également
Bonne journée !