Bonjour à tous,
Je développe régulièrement de petits outils pour aider les opérationnels de ma boite à s'automatiser.
Je suis sur une application qui permet de créer des bons de commandes.
Une fois que ceux-ci ont été créés, les opérationnels veulent pouvoir revenir dessus pour compléter certaines informations (niveau de réalisation de la prestation, montant facturé Vs montant du bon de commande, ...)
Du coup, j'en viens à mon problème :
Dans le formulaire qui leur permet de retrouver le bon de commande qu'ils cherchent, il y a plusieurs ComboBox ("Etat du bon de commande", "Créateur", "Fournisseur", ...) qui sont alimentées par les informations qui sont déjà dans la base. Ces ComboBox permettent de filtrer une ListBox qui, par défaut, contient toutes les lignes de la base ; et certaines colonnes.
Les opérationnels m'ont demandé de pouvoir rechercher leur bon de commande sur des notions de dates.
J'ai donc fait une ComboBox qui permet de faire un premier choix :
- "en date du ..."
- "avant le ..."
- "après le ..."
- "entre le ... et le ..."
Suite à ce choix, une (pour les 3 premiers choix) ou 2 ComboBox apparaissent pour renseigner la ou les dates qui vont bien.
Autant j'arrive à filtrer ma ListBox dans le cas d'un "en date du ..." et une date précise ; avec un script :
"... And wsFeuil.Range("N" & lgLigDeb).Value Like Critere9 And ..."
(Où la colonne "N" correspond à la colonne des dates ; et où "Critere9" correspond à la date sélectionnée)
Autant, je n'arrive pas du tout à filtrer la ListBox lorsqu'il s'agit de faire un "avant le ..." ou "après le ..." (et je ne vous parle pas du "entre le ... et le ..." !!)
J'ai essayé d'adapter un script du genre :
"... And wsFeuil.Range("N" & lgLigDeb).Value > Critere9 And ..." ; mais rien à faire, j'ai une "incompatibilité de type" (je comprends bien pourquoi, mais je n'arrive pas du tout à contourner le problème)
J'ai pas mal cherché de formulaire avec les mêmes critères que moi pour l'adapter à mon besoin, mais je n'ai rien trouver.
J'ai trouver une piste qui consiste à transformer les dates en données numériques pour les comparer à la date sélectionnée qui serait aussi en donnée numérique ... mais cela nécessiterait de constamment jongler entre le format date et le format numérique : pendant l'affichage dans la ListBox, pendant le filtre, pendant la restitution, ... et ça, je ne suis pas assez calé en VBA pour arriver à cela.
Est-ce que l'un d'entre vous aurait une piste ? des conseils à me proposer ?
Evidemment, je tiens à votre dispo un fichier Excel si vous le souhaitez (mais il est indiqué dans les bonnes pratiques que cette solution est à tenir en dernier recours)
Max
Partager