Filtrer les données comprises entre deux dates

Bonjour tout le monde,

je veux créer un userform qui me permet d'afficher l'historique des mouvements d'article (entrée/sortie) comprises entre deux dates au choix. Pour cela, j'ai fait un code vba qui me filtre les données de ma feuille Excel ayant une date comprise entre les deux dates insérées dans les deux dtpickers de mon userform

Au debut j'ai cru que ca marchait, mais je me suis rendu compte que ca marche pas très bien.

Voici le code

Private Sub CommandButton1_Click()

Sheets("MOUVEMENT").Activate

Range(Range("A5"), Range("E5").End(xlUp)).Select

Selection.AutoFilter Field:=1, Criteria1:=">=" & CDate(DTPicker1.Value), Operator:=xlAnd, Criteria2:="<=" & CDate(DTPicker2.Value)

Selection.AutoFilter Field:=3, Criteria1:="=" & ComboBox1.Value

End Sub

J'envoie un bout du fichier

236classeur1.xlsm (21.32 Ko)

Merci cordialement


Desolé j'ai pas spécifié le pb:

quand j'entre par exemple les dates 08/06/2017 et 11/06/2017, mon filtre ne sélectionne aucun historique alors qu'il y a un historique en date du 10/06/2017.

Bref le filtre ne respecte pas l'intervalle de dates insérées dan l'userform.

Bien cordialement

bonjour

conseils :

  • mettre en négatif les sorties, ça facilite la lecture d'une liste (et ça peut simplifier les calculs de stocks)
  • supprimer tout VBA. Les filtres automatiques du menu Données suffisent et sont bien plus fiables. Autre possibilité ; un TCD avec un segment chronologique

un exemple joint

j'ai mis sous forme de tableau, on devrait toujours mettre sous forme de tableau, yake des avantages

Bonjour ZOLEKO, jmd,

Malgré la juste remarque de jmd, comme j'avais commencé -> un essai via VBA.

Private Sub CommandButton1_Click()

   Sheets("MOUVEMENT").Activate
   On Error Resume Next
   ActiveSheet.ShowAllData
   With Range("a5:e" & Cells(Rows.Count, "a").End(xlUp).Row)
      .AutoFilter Field:=1, Criteria1:= _
                  ">=" & Format(DTPicker1.Value, "mm/dd/yyyy"), Operator:=xlAnd, _
                  Criteria2:="<=" & Format(DTPicker2.Value, "mm/dd/yyyy")
      .AutoFilter Field:=3, Criteria1:=ComboBox1 & "*"
   End With
End Sub

Merci Mapoire pour ton aide. Ton code marche super bien. Je crois que je vais l'utiliser

Jmd merci pour tes conseils. Je crois que je vais utiliser ta mise en forme car je la trouve très jolie Par contre comment tu fais pour afficher le petit tableau de date là ? C'est nouveau pour moi

Bien cordialement

re

la mise en forme : menu Accueil, "mettre sous forme de tableau". Très pratique, et puissant.

la table de synthèse est un tableau croisé dynamique TCD

une fonctionnalité facile d'Excel et sans doute la plus puissante !

à apprendre avant de savoir écrire = 1+ 1

essaye, tu seras surpris

il y a des tonnes de tutos sur le net

abandonne VBA, c'est un mauvais logiciel. Puissant certes mais mal fichu, et incompatible avec pas mal d'environnements. A réserver aux hyper spécialistes, que je salue au passage car il y en a sur ce forum.

VBA est totalement inutile pour des applications pro avec Excel.

Rechercher des sujets similaires à "filtrer donnees comprises entre deux dates"