Moteur de recherche combiné avec un système de filtre

Bonjour,

Ceci est mon premier message sur le site du coup je me présente, je suis lycée, et j'essaye d'apprendre un peu le vba sur mon temps libre. Pour cela je me suis lancé dans un projet que je mets en copie et pour lequel je bloque un peu maintenant.

Ce dernier comprends deux fonctions principales : un moteur de recherche et un système de filtre sur une base de donnée.

1. Le premier problème concerne le moteur de recherche, après avoir tenté en vain pas mal de choses, je n'arrive pas à faire en sorte que ce dernier n'affiche pas les lignes masquées par le filtre. Autrement dit, lorsque je filtre préalablement le document puis que je tape un mot dans la barre de recherche, il affiche tout les résultats y compris les lignes masquées ce que j'aimerai corriger.

2. Problème concernant le système de filtre, j'aimerai ici tout simplement faire en sorte qu'après avoir validé un choix dans une ou plusieurs combobox, ces derniers restent en mémoire si je reclique sur le bouton filtre. Pour l'instant mon bouton valider, reset les choix de la combobox.

Vous remerciant par avance pour tout aide apportée.

Bien à vous.

75citations-v2.xlsm (81.25 Ko)

Bonjour,

ci-jointe une proposition avec révision du code simplifié par l'utilisation de la classe ListObject relative à un tableau structuré

153citations-v3.xlsm (84.04 Ko)

Bonjour

Désolé Zhankou, je suis débutant aussi en programmation VBA mais je suis obligé de répondre à ton post pour demander l'aide de Thev.

Alors bonjour Thev, tu as travaillé sur un projet qui m'aide beaucoup dans mes débuts sur VBA. Voici le lien de la question résolue.

https://forum.excel-pratique.com/excel/excel-word-signet-125915

J'ai un problème similaire et j'ai juste besoin que tu modifies légèrement le code que tu avais écris dans ce post. Voici le lien de mon post de demande d'aide sur le forum

https://forum.excel-pratique.com/excel/automatiser-le-remplissage-de-dossier-de-lot-depuis-excel-155...

Merci d'avance de ton aide :)

Bonjour Thev et merci pour ton aide.

Je viens à peine d'ouvrir le document et il semblerait que le bouton réinialiser (celui qui n'est pas dans le userform) ne fonctionne pas après avoir filtré. Après je n'ai pas encore pu regarder le code en détail, mais il semblerait que ta modification permette de filtrer directement avec la recherche mais cela ne marche pas quand on revient en arrière (exemple j'écris co dans la barre de recherche j'ai 4 résultats, j'écris com j'ai deux résultats, et si j'efface le M je ne reviens pas sur 2 résultats).

Je regarderai plus en détail demain mais je te remercie déjà pour le travail effectué .

Bonjour,

ci-joint correctif avec révision du code à l'ouverture

67citations-v4.xlsm (84.99 Ko)

PS : Accueil et non Acceuil

Bonjour,

Je te remercie pour le travail fait. Je me demandais pourquoi tu mettais les variables dans Module, est-ce que cela à un intérêt ou c’est une règle en codage ? Aussi je ne suis pas certain de comprendre l’utilité de passer par la classe ListObject.

Je constate que la grande différence avec ma fonction recherche c’est que la tienne filtre en même temps là où la mienne surligner juste en vert l’élément recherché. Je ne sais pas ce qui est le plus intéressant mais je m’étais dit que le filtre risquerait de poser problème en se superposant avec la fonction filtre déjà existante.

D’ailleurs j’ai remarqué quelques problématiques avec le document sur ce point :

Si je commencer par filtrer le document avec la combobox romantisme, il me reste l'id 1 et 2. Si ensuite je recherche dans la textbox l’élément « Mé », ilefface bien la ligne 1 mais la listbox à coté de la textbox affiche toujours l'id 2 et 3 alors que la 3 ne devrait pas apparaitre puisqu’elle a été masquée par le filtre. C'est ça que j'aimerai modifier si c’est possible

Qui plus je remarque, toujours dans cet exemple, que si j'efface la sélection, l’ID 1 ne réapparait pas alors que le champ de recherche est vide et qu’il ne reste que le filtre.

Par contre, si je n’utilise pas la fonction filtre et que j’utilise que la fonction de recherche, ajouter ou effacer des lettres réaffiche bien tous les ID correspondant. L’actualisation se fait donc bien à ce niveau.

Enfin, si je procède à la recherche de l’élément « Mé », l’ID 2 et 3 apparait mais si j’ajoute le filtre par-dessus via la combobox romantisme ça m'affiche 1 et 2. La recherche est donc effacée par le filtre sauf erreur.

Le problème vient donc bien de la juxtaposition de la fonction filtre avec la fonction recherche que ce soit quand on procède à la recherche puis le filtre ou que l’on commence par filtre puis rechercher.

En tout cas je te remercie beaucoup du temps que tu me consacre, c’est énorme pour quelqu’un qui débute comme moi et cherche à comprendre.

Bien à toi.

Je me demandais pourquoi tu mettais les variables dans Module
Cela permet de conserver leurs valeurs après le déchargement du formulaire. Pour pouvoir les utiliser dans le code du formulaire, il faut les déclarer avec l'instruction Public et non Dim.

je ne suis pas certain de comprendre l’utilité de passer par la classe ListObject
Cette classe utilise directement le tableau structuré. Elle connait donc sa position sur la feuille, le nombre de ses lignes et colonnes, ainsi que le nom de des colonnes. Ce qui simplifie l'écriture du code car les instructions permettant de définir les infos précédentes (telle que par exemple la dernière ligne utilisée) sont parfaitement inutiles. De plus, cette classe permet un code invariant en cas de déplacement du tableau, d'insertion de lignes ou de colonnes. Donc la maintenance est grandement facilitée.

Le problème vient donc bien de la juxtaposition de la fonction filtre avec la fonction recherche
La séquence filtrage + recherche fonctionne mais la séquence inverse recherche + filtrage ne fonctionne pas car le filtrage repart toujours sur une situation vierge de toute recherche. Dans ce cas, le mieux est de réinitialiser la recherche.
ci-jointe nouvelle version

26citations-v5.xlsm (86.54 Ko)

Bonjour,

C'est super je comprends mieux. Du coup tout marche à l'exception maintenant du fait que lorsqu'on filtre par exemple sur Romantisme et qu'on recherche l'élément "Mé", un seul résultat apparait mais si je retire le "é" rien ne se passe alors qu'il devrait afficher deux résultats.

Juste pour savoir, tu es développeur de métier ou c'est juste par passion, c'est assez impréssionnant.

Merci encore pour toute l'aide que tu m'apportes et dans la réalisation et la compréhension.

Bien à toi.

Bonjour,

Le maintien d'un filtrage avec la recherche n'offre pas une programmation simple. Essayer cette nouvelle version

54citations-v6.xlsm (84.96 Ko)

Je ne suis pas ou plutôt je n'ai pas été développeur de métier, car je suis maintenant retraité et travaille dans des associations. Mais je l'ai été dans mes jeunes années pour débuter dans la vie professionnelle et j'en ai gardé le goût et la passion.

Bonjour,

J'ai regardé et fais quelques modifications, notamment ajouter une fonction pour qu'il ne tienne pas compte des accents et tout semble marcher super. Vraiment merci.
Par contre, parmi les changements j'ai enlever une ligne qui était dans ta fonction recherche et qui placer à la sortie du Sub, le pointeur sur le pointeur sur la colonne 1 du tableau (colonne ID) ce qui avait pour conséquence, lorsqu'on effacer la rechercher, de nous sortir de la textbox et de taper dans cette case du tableau. Il y avait un intérêt particulier à cela car après l'avoir enlevé, cela me permet bien de rester dans la textbox ?

Bien à toi.

Bonjour,

. Il y avait un intérêt particulier à cela

Ce n'est plus nécessaire avec le code actuel.

Très bien je te remercie beaucoup pour ton aide et tes conseils. Il restera deux améliorations à faire à savoir :

- Lorsque je sélectionne la ligne vide dans la combobox cela considère qu'il n'y a pas de filtre à mettre.
- Mettre les onglets dans les combobox en cascade

Mais ça marche déjà super comme ça, du coup je te remercie infiniment.

Bonjour,

ci-jointe nouvelle version avec ajout de ma fonction "liste_triée_sans doublons"

164citations-v7.xlsm (90.29 Ko)
Rechercher des sujets similaires à "moteur recherche combine systeme filtre"