Fonction Autofilter pour filtrer les Dates

Bonjour,

J'ai un problème avec la fonction Autofilter, ça ne filtre pas exactement comme les critères données . Voici mon code

dsh.UsedRange.AutoFilter Field:=9, Criteria1:=">=" & Format(Me.txt_Start_Date.Value, "D-MMMM-YYYY"), Operator:=xlAnd, Criteria2:="<=" & Format(Me.txt_End_Date.Value, "D-MMMM-YYYY")

si j'ai une date par exemple : 20-mars-2019 et mon intervalle est compris entre 1-Fevrier-2019 et 1 - mars - 2020 le programme ne filtre pas du tout et retourne un résultat vide.

Merci par avance pour vos aides !!!

Vous trouverez ci joint l'interface que j'ai créé. Start Date et End Date , le bouton refresh pour filtrer les résultats

11inventory-v2.xlsm (94.81 Ko)

Bonjour et

Un filtre se faire avec des dates au format numérique

Donc dans ton cas entre 43862 et 43891

Bonjour et

Un filtre se faire avec des dates au format numérique

Donc dans ton cas entre 43862 et 43891

Bonjour, Merci pour votre réponse rapide.

Est-ce qu'il y a un autre moyen de comparer les deux dates de format D-MMMM-YYYY ? car j'ai récupéré et inséré les dates sous cette forme

Est-ce qu'il y a un autre moyen de comparer les deux dates de format D-MMMM-YYYY ? car j'ai récupéré et inséré les dates sous cette forme

Il faut distinguer la forme et le fond

Excel enregistre une date comme un nombre entier. Exemple 43862

Même si tu peux l'afficher (=maquillage) sous différente forme :

01/02/2020

1/2/2020

1-fév-20

2020-02-01

etc.

La comparaison sera toujours à faire selon la valeur stockée, donc en nombre entier.

Change le format en standard dans ta feuille excel et tu verras ... change à loisir avec d'autres formats.

Si en mettant en format standard tu ne vois pas apparaître un nombre entier, cela veut dire alors que tu n'as pas introduit une date mais du texte et tu ne pourras pas filtrer !

Aïe, je viens de voir que les dates introduite ne sont pas des dates mais du texte ! C'est le problème d'introduire des dates à partir d'un userform !

Il faut d'abord résoudre ce point. Mais je n'ai pas compris le fonctionnement de ton fichier !

Aïe, je viens de voir que les dates introduite ne sont pas des dates mais du texte ! C'est le problème d'introduire des dates à partir d'un userform !

Il faut d'abord résoudre ce point. Mais je n'ai pas compris le fonctionnement de ton fichier !

En fait j'ai créé ce fichier pour gérer le stock de mon magasin, la fonction autofilter est utilisée pour filtrer suivant l'intervalle donnée la date des historiques de vente et d'achat ( stockés dans la feuille " Sale Purchase " ) qui sont affichés dans l'onglet "Transactions". J'ai modifié mon code j'ai réussi maintenant à retourner une valeur de type Date en utilisant la fonction CDate mais la fonction Autofilter ne fonctionne tjrs pas

Si tes données sont maintenant bien des données date (vérifie bien en changeant le format dans la feuille excel et en passant en standard -avant de revenir au format que tu souhaites-), la moitié du travail est fait.

Pour ma part, je n'utilise pas de userform, mais tu devrait essayer aussi de mettre CDate devant txt_Start_Date.Value et txt_End_Date.Value.

Essaie aussi une première solution qui serait

dsh.UsedRange.AutoFilter Field:=9, Criteria1:=">=43862" , Operator:=xlAnd, Criteria2:="<=43891" 

afin d'éliminer d'autres soucis liés à la syntaxe

Juste un petit test ...

35inventory-test.xlsm (22.76 Ko)

Juste un petit test ...

J'ai trouvé la solution , j'ai essayé le Cdate et c pas suffisant, du coup je me suis dit de convertir cette valeur en double pour etre sur d'avoir une valeur en entier. J'ai mis donc

CDbl(Cdate(Me.txt_Start_Date.Value)) et ça fonctionne mtn !!

Merci beaucoup pour ton aide !! Bonne fin journée à toi

Parfait

C'est complexe sur 2 plans :

  • les userform (que j'évite) sont des collections de valeurs textuelles, pfttt !
  • les dates dans excel sont souvent mal comprises (comme les heures)
L''important est d'avoir résolu et j'espère avancé sur la compréhension.

Rechercher des sujets similaires à "fonction autofilter filtrer dates"