Recherche selon critères multiples

Bonjour à tous,

Je tiens tout d'abord à préciser que je suis totalement novice en vba, et que je tiens mes quelques connaissances d'avoir consulté quelques tuto et autres sites de formation.

Ce que vous allez donc découvrir dans le fichier joint, j'en suis conscient, tient parfois plus du bricolage que de la programmation. C'est pas académique, c'est pas forcément écrit de la manière la plus pratique, mais le plus important pour moi, c'est que ça fonctionne

Je suis maintenant confronté à un problème dont je ne parviens à m'extirper. J'explique :

Dans la feuille "Liste dossiers" (que j'ai volontairement abrégée pour les besoins de l'exercice), j'ai une liste de plus de 2000 lignes.

J'aimerai, via le bouton de commande "Recherche selon critères", extraire de ce tableau uniquement les lignes correspondantes à ces critères, pour qu'elles apparaissent dans la feuille "Recherche selon critères". Pour ce faire, le bouton de commande appelle un userform reprenant 4 critères : "Ingénieur dirigeant", "Suppléant", "Localité" et "Commune". La recherche pouvant inclure indifféremment un, plusieurs ou la totalité de ces critères. Par exemple, Je souhaite voir tous les dossiers gérés par AB, ou encore ceux gérés par PHW mais uniquement sur Marcinelle. Capich ?

Petite astuce complémentaire en bonus, pour les critères "Localité" et "Commune", je souhaiterai que cela apparaisse également sous forme de liste déroulante, cette liste devant se baser respectivement sur les colonnes G et H du tableau reprenant la liste des dossiers, cette liste comprenant d'une part pas mal de doublons, et d'autre part, sera incrémentée au fur et à mesure des dossiers à venir.

En vous remerciant pour votre précieuse aide et vos conseils avisés, et en comptant sur votre indulgence et votre compréhension quant à mon incompétence et mon inexpérience.

Luc

bonjour

1/

une table de données ne doit comporter qu'une seule ligne de titres

2/

JAMAIS de cellules fusionnées, pour faire joli trouver un autre moyen (centrer sur colonnes)

3/

mettre sous forme de Liste (anciens Excel)

4/

filtrer avec les petits boutons gris qui sont apparus dans la ligne de titres

5/

trier avec ces mêmes boutons

pas de VBA, inutile, compliqué et qui tombe en panne.

ne te laisse pas influencer par ce que tu as vu sur des progiciels (des formulaires de saisie et de recherche). AUCUN de ces progiciels n'est fait avec Excel.

bon travail

amitiés excelliennes

Bonjour,

Merci pour ces judicieux conseils, dont je saisis bien toute la subtilité et l'utilité. Je comprends bien que j'ai un peu compliqué le problème avec tout ce que tu me dis...

Cependant, puisque ce fichier devra être accessible et utilisé par l'ensemble de mes collègues, c'est vrai que par souci de clarté,

je me suis beaucoup attaché au visuel.

En conséquence, n'est-il pas possible, tout en conservant la feuille "Liste dossiers" intacte, d'envisager la réalisation d'une copie "brute" de la liste de données sur une nouvelle feuille (à partir de la ligne 3 jusque... fin du tableau, en tenant compte qu'il va s'allonger)? Cette copie rentrerait alors dans le cadre de tes 3 premiers critères (ligne de titre unique, pas de cellules fusionnées, liste excel). Par contre, je ne souhaite pas travailler par l'intégration de l'outil "Filtrer", car cela inclut d'office un filtre sur chaque colonne. or, je ne souhaite des filtres que sur les colonnes G, H, M et N. On travaillerait dès lors à partir de cette "copie" pour effectuer les "recherches selon critères"...

Cela me permettrait d'une part de conserver le visuel de la feuille initiale, tout en permettant à chacun de consulter facilement la liste sur base des simples boutons de commande.

Merci,

Luc

re

oui

crée un nouveau fichier

clique en A1

mets =

clique en A2 du fichier de données (celui que tu as mis en PJ)

valide

tire cette mini formule vers la droite et vers le bas, loin pour anticiper l'allongement du fichier des données

sur ce fichier "miroir",

tu mets en Liste

je te conseille encore de ne pas faire de macro, mieux vaut enseigner les filtres aux utilisateurs, c'est si facile et si instinctif.

bon travail

L'idée est bonne, effectivement, et sur base de cette liste, je pourrais effectivement me contenter de filtres. Sauf que je ne souhaite pas que ces filtres apparaissent sur toutes les colonnes. Et je ne pense pas qu'excel offre la possibilité de sélectionner les colonnes sur lequelles je souhaite appliquer mes filtres...

Quant à expliquer l'utilisation des filtres aux utilisateurs, cela reste sujet à caution : je n'ai pas envie que chacun fasse n'importe sans que je puisse garder la main-mise.

re

chacun possède son exemplaire personnel du fichier miroir

il peut même le détruire, tu lui redonnes un exemplaire et c'est reparti

astuce quand même :

mettre 2 lignes de titre

c'est contraire à ma déontologie, mais...

voir exemple

on est moins tenté de filtrer par pays

13classeur2.xlsx (13.13 Ko)

Je comprends parfaitement tes intentions de trouver une solution facilement applicable, mais je reste sur l'idée que d'un point de vue pratique, en terme de visuel, les filtres ne conviendraient pas.

Je préfèrerai nettement passer par le bouton de commande et le userform2, comme initialement proposé, quitte à éventuellement passer par une "feuille de travail". pour facilité la recherche. Feuille de travail qui serait bien évidemment mise à jour à chaque ajout dans la feuille "Liste dossiers".

Pour info, la liste dossier sera incrémentée plusieurs fois par semaine. Je ne vais donc pas créer et transférer un nouveau fichier miroir à chaque collaborateur (plus de 100!) lors de chaque modification : un seul fichier unique, accessible à tous sur le serveur, avec des feuilles protégées en écriture (pour éviter les erreurs et les manipulations intempestives - seules quelques personnes auraient les droits), et les seules possibilités aux utilisateurs lambda de trier le listing, d'imprimer une fiche dossier et d'effectuer une recherche selon critère qu'il pourrait également imprimer.

Bonjour Bandhi, jmd, le forum,

Je préfèrerai nettement passer par le bouton de commande et le userform2, comme initialement proposé, quitte à éventuellement passer par une "feuille de travail". pour facilité la recherche. Feuille de travail qui serait bien évidemment mise à jour à chaque ajout dans la feuille "Liste dossiers".

Au risque de m'attirer les foudres des pros , voici un début de réponse, la méthode n'est pas très conventionnelle , donc à prendre pour ce qu'elle vaut,

L'activation de la feuille "Recherche par critères" active le transfert des données provenant de la feuille "Liste dossiers" (macro transfert).

L' activation de la feuille "Liste dossiers" efface les données de la feuille "Recherche par critères" (macro raz).

Le bouton Recherche selon critères de feuille "Liste dossiers" ouvre UserForm2 qui permet d'écrire les critères sur la feuille "Recherche par critères" et filtre les données (macro filtrage).

Cordialement,

Re,

pour les critères "Localité" et "Commune", je souhaiterai que cela apparaisse également sous forme de liste déroulante

Bonne soirée.

Bonsoir,

Avec un programme générique

Ceuzin

Bonjour à tous, bonjour xorsankukai,

Ah ben voilà, super, merci !

Comme tu le précises, "au risque de...", mais comme je le disais aussi dans mon message initiale

j'e suis conscient que ça tient parfois plus du bricolage que de la programmation. C'est pas académique, c'est pas forcément écrit de la manière la plus pratique, mais le plus important pour moi, c'est que ça fonctionne

Il me reste maintenant à tenter comprendre comment tu as procédé, car tout l'intérêt, outre le fait de trouver une solution, est bien entendu aussi pour moi de progresser !

Encore merci !

Luc

PS : sans indiscrétion, et avec ma reconnaissance éternelle , cela t'a pris combien de temps pour trouver la solution?

Bonjour Ceuzin,

Merci également pour ta solution.

Je ne l'avais pas envisagée comme ça, mais pourquoi pas.

L'idée est séduisante en terme de présentation et de facilité d'utilisation. Je vais également analyser ton code, même si il me parait beaucoup plus complexe !

PS à tous : pour info, je me suis inscrit aux modules de formation VBA proposés par mon employeur. Ca reste une approche basique : en 7 jours de formation, je n'aurai bien entendu pas la prétention de devenir programmateur, mais ça sera déjà ça de pris.

Re Luc,

cela t'a pris combien de temps pour trouver la solution?

Sur le principe, cela paraissait simple, j'ai procédé étape par étape:

1) Je transfert toutes les données dans la feuille de recherche (macro transfert)

2) J'écris les critères sur la feuille de recherche via UserForm2

3) Je filtre les données (macro filtrage)

Bien sûr, avant chaque recherche, il faut effacer la feuille recherche ( macro raz)

Mon souci, c'est que je n'ai pas réussi à faire le tout en une seule macro,

D'où le "bricolage":

1) si feuille "Liste données" activée: on efface la feuille "Recherche"

2) si feuille "Recherche" activée, on transfert toutes les données , UserForm2 faisant le reste.

La solution de CEUZIN (que je salue ) est nettement plus indiquée , plus rapide et plus fiable (malheureusement trop complexe pour moi, ).

Bon courage pour la suite,

Cordialement,

Du bas (je n'ose pas dire "du haut" ! lol) de mes connaissances, c'est également par étape que je commence tout doucement à comprendre ce que je fais.

En gros, quand je suis confronté à un problème, j'essaye tout d'abord de créer une macro et de comprendre son fonctionnement. Et si pas possible de passer par une macro, je regarde des tuto et des sites dédiés avant de poser mes questions sur le forum. Ensuite, j'intègre ce nouveau code au code "en construction", en procédant pas à pas et avec essais, jusque ce que cela fonctionne...

D'où, effectivement, mon côté un peu bricolage et peu académique : mon code se construit au fur et à mesure de mes besoins et de la progression de mes maigres connaissances. Mais au final, ça fonctionne...

La solution proposée par Ceuzin est effectivement super bien ficelée et pourrait parfaitement convenir, mais ce code me reste pour le moment inaccessible. Je la garde cependant sous le coude pour le jour où j'aurai enfin "la lumière" qui me permettra de comprendre

Merci pour tes encouragements, et encore merci pour ta solution.

Luc

PS: je viens de me rendre compte que les listes déroulantes des ingénieurs et suppléants se construisaient également sur base du tableau de données. Je n'y avais pas pensé, mais c'est une très bonne chose, car certains gestionnaires ne sont plus dans le service, mais ils apparaissent bien évidemment toujours dans le listing. (ma liste ne tenait compte que des agents actifs)

Re,

Tout comme toi je suis autodidacte et j'apprends sur le tas.

J'apprends énormément de ce site (tu as quelques cours pour débuter), tout comme toi, je tâtonne et expérimente, je décortique les codes afin de pouvoir les reproduire....la méthodologie où la syntaxe n'est pas toujours la bonne mais les pros sont toujours là pour nous remettre sur la bonne voie

Amicalement,

Rechercher des sujets similaires à "recherche criteres multiples"