Filtrer une ListBox en fonction d'une date

Bonjour,

Je vous expose mon problème. J'ai une ListBox qui est alimenté par une TextBox, qui est, elle, alimentée par une ComboBox.

Ma ComboBox liste les entêtes de mon tableau qui serviront pour la recherche. Ma TextBox sert à mettre les mots-clés (Nom, Prénom, Date...) afin d'afficher le résultat dans la ListBox.

Mon soucis est le suivant:

Dans ma ComboBox j'ai une entête DATE. Lorsque je la sélectionne et que je saisi 2022, ou *2022 par exemple dans ma TextBox, rien ne se passe, le filtre ne fonctionne pas. J'ai essayé en ne mettant rien dans la TextBox mais même chose ça ne s'affiche pas. Par contre lorsque je passe par un filtre Nom ou Prénom, ça fonctionne. Je pense que cela est dû au format de la cellule qui n'est pas identique au format de recherche mais je ne sais pas du tout comment régler ce problème.

Je n'ai pas le fichier chez moi, donc je ne peux vous transmettre le fichier avec le code. J'essayerai demain.

En vous remerciant par avance !

Bonsoir,

sans fichier ce n'est pas simple et si l'on vous donne une solution vous ne pourrez pas la testée...
ceci dit, le format date d'une feuille Excel n'est pas égal au format date d'une TextBox qui comme son nom l'indique est du texte.
Pour cela sous VBA il y a des fonction qui permettent de passer de l'un à l'autre comme par exemple CDate() qui indique que l'expression qui se trouve dans les parenthèse est une date: CDate(TextBox1) par exemple. Dans vos filtres il faudra peut-être (certainement) jouer avec ceci et les autres !

Si vous devez faire une recherche sur une année : Year(CDate(TextBox1))

Mais je ne suis pas très fort la dessus, et les filtres non plus, alors...

@ bientôt

LouReeD

Bonjour,

De base il faut que le code sache que c'est une date (une textbox renvoie du texte) et que le filtre se fasse dans la colonne Date. Si vous tapez 2022 ou *2022, le code peut comprendre autre chose.

Cordialement

Merci à vous LouReeD et Dan.

En effet sans fichier compliqué d'avoir qqch de concret. Je tâcherai de vous envoyer ça demain matin.

J'ai effectivement essayé avec CDate mais ça n'a pas fonctionné. Le fait que ce soit une TextBox pose peut être problème du coup.

Le truc c'est qu'il faut pouvoir switcher la TextBox entre un format Texte et un format Date car je peux très bien faire un filtre sur le Nom comme sur une Date.

Après si il est possible de faire une extraction des dates dans une autre ListBox ça pourrait me convenir. Le fichier me sert de Suivi des formations et j'ai besoin de mettre en avant les formations qui arrivent en fin de validité (extraction ou filtre des formations qui expirent dans moins de 2 ans par exemple).

Alors pour ça j'ai dans mes applications : "suivi des qualifications"...

@ bientôt

LouReeD

LouReeD,

En effet, j'ai bien vu votre fichier de "Suivi des qualifications". Il m'a justement inspiré pour l'adapter à mon besoin et mettre en place un affichage plus intuitif. Je dois également ajouter une partie de "Suivi du budget des formations" à mon fichier pour le compléter encore plus.

Vous trouverez en PJ, un fichier exemple de mon suivi des formations.

Je résume également ma problématique :

Dans l'onglet "MENU", bouton "SUIVI FORMATION" → Ouverture d'un USF de recherche. Dans ce USF, une ComboBox avec pour liste les entêtes de mon tableau de suivi (onglet "SUIVI"). La TextBox à droite me permet de faire le filtre en fonction du besoin sélectionner dans la ComboBox (Nom, Prénom, Unité...).

Le problème se trouve au niveau du filtre "Fin de validité" qui ne filtre pas. J'ai essayé CDate, Format(TextBox, "yyyy/mm/dd"), Format(TextBox, "#") rien n'y fait ça ne fonctionne pas. Mon but est de pouvoir réaliser un filtre et/ou une extraction des données en fonction d'une date.

Exemple : Filtrer les données ayant une fin de validité se terminant dans 1 an, 2 ans, en 2021, en 2022....

En espérant que cela vous aide un peu plus.

Bonsoir,

un début d'adaptation qui fonctionne pour les recherches "exactes" :

Mais ce que vous demandez n'est pas facile car 2022 c'est un chiffre et un début de date mais ce peut être en fonction de la colonne choisie un matricule ou bien autre chose...

@ bientôt

LouReeD

Bonjour LouReed,

Merci pour votre réponse. J'ai essayé une recherche par date exacte et malheureusement ça n'a pas fonctionné.

Cependant, j'ai peut être trouvé une alternative en ajoutant une colonne au tableau de suivi m'indiquant le nombre de jour restant avant la fin de validité. J'ajouterai un bouton de filtre dans l'USF de recherche afin de m'afficher dans la ListBox les lignes inférieures ou égales à XX jours.

Merci encore d'avoir pris le temps de répondre.

Bon week-end à vous !

Bonne fin de weekend @ vous !

Merci de votre retour !

@ bientôt

LouReeD

Rechercher des sujets similaires à "filtrer listbox fonction date"