Moteur de recherche par mot clefs
Bonjour à tous,
Pour mon projet de fin d'étude je dois créer un moteur de recherche sur Excel, c'est-à-dire à partir d'une base de donnée s'établissant sur une seule feuille. La recherche s'effectuera sur une seule colonne et le résultat devra afficher les résultats des autres colonnes (J'espère être claire).
L'utilisateur aura simplement à taper un mot clefs et le ou les résultats correspondant à ce mot clef devront apparaitre.
Etant débutant sur excel je ne sais pas comment faire, toute aide sera la bienvenue
Merci par avance
Bonjour,
Tu devrais commencer par établir un modèle de la conformation de ta base de données, préciser sur quelle colonne s'effectuera la recherche, indiquer le type de mots-clés qui seront utilisés et le rapport entre ces mots-clés et les valeurs de la colonne de recherche, définir la zone de résultats ou les modalités de leur mise en forme, si le résultat de la recherche doit être unique ou éventuellement multiple, etc. Bref tous les éléments à prendre en considération, avec un fichier d'illustration et permettant de travailler...
Cordialement.
Alors, dans une premier temps l'utilisateur appuiera sur un bouton "Recherche" ensuite s'ouvrira une userform avec une combobox un bouton "Valider" et un bouton "Quitter".
Mon souhait c'est que dans la combobox les mots clefs apparaissent, soit on sélectionne le mot clef qu'il nous intéresse soit on l'écrit directement. On appuie sur valider ensuite une fenêtre s'ouvre avec les informations correspondantes à ce mot clef du coup la recherche doit être multiple.
Je fais une base de temps unitaires gros-œuvre donc si je tape dans la combobox ou je sélectionne dans la combobox le mots clefs "Armatures" je veux que tous les temps unitaires de mise en œuvre des armatures apparaissent.
La base de donnée et le bouton recherche sont sur deux feuilles de calculs différentes. Les mots clefs correspondent à une catégories de classification type plancher, poutres, coffrage ect... La zone de recherche du moteur de recherche s'effectue sur une seule colonne et les résultats qu'il doit afficher se situent sur deux autres colonnes.
Je vous joins le fichier excel, les données étant confidentiels j'ai changé les résultats. Les mots que je veux mettre en mots sont en gras.
J'espère que ça pourra t'aider
Cordialement
Il semble d'après ton modèle que ce n'est pas véritablement une recherche visant à réunir en résultats des éléments dispersés dans la base, mais plutôt un affichage de blocs de données correspondant chacun à un intitulé.
A confirmer car ce n'est pas exactement la même chose.
Et tu peux en profiter pour dire si tu veux l'affichage du résultat dans la feuille ou dans le Userform.
Oui c'est un affichage de donnée correspondant chacun à un intitulé.
Plutôt l'affichage dans la userform
Je reste disponible pour plus de précision
Dispositif à voir s'il répond à tes spécifications.
La base de donnée a été réarrangée :
J'ai intitulé tes "mots-clés" catégories.
Deux plages nommées :
1) la liste des catégories, nommée Catég
Elle est nommée en plage fixe, mais si tu dois y faire des ajouts, il conviendra de la nommer en dynamique pour ne plus avoir à y retoucher.
J'ai mis un numéro d'ordre à gauche de la liste, ces numéros ne sont pas inclus dans la plage nommée mais constituent des repères.
2) la liste des prestations, nommée Presta (nom qui couvrira la partie recherchée)
A gauche de la plage, le numéro de la catégorie est repris, il est utilisé par la formule qui définit Presta pour ajuster l'emplacement et la dimension de la plage couverte par le nom.
Le numéro de la catégorie qui est prise en compte par le nom est celui qui se trouve en A1
Ce système réduit considérablement le code de la recherche proprement dite.
La liste Catég est affectée au ComboBox. Lorsque tu fais une sélection dans la liste, on se contente d'effacer la liste éventuelle d'une ListBox qui recueille les résultats, et de modifier le numéro en A1 selon la catégorie retenue.
Quand tu valides, la liste Presta (toujours la même mais son contenu change) est affectée à la ListBox (3 colonnes).
Les désignations d'en-têtes des prestations sont reprises dans des étiquettes au-dessus de la ListBox qui sont rendues visibles ou non selon qu'une liste est affichée ou pas.
Cordialement.
Premièrement merci c'est vraiment top ce que tu as fait
Oui je vais ajouter des mots clefs du coup je devrais la passer en dynamique est ce qui y'a une manipulation particulière à faire ?
Cordialement
Tu remplaces la référence du nom (qui est en plage fixe) par cette formule :
=DECALER('Base de donnée'!$B$2;;;NBVAL('Base de donnée'!$B:$B)-1)et c'est tout. tout ce que tu ajoutes à la suite sera pris en compte sans qu'il y ait à y revenir.
Je suppose que si tu ajoutes des catégories, tu ajouteras aussi des prestations correspondant à chacune...
Comme je l'ai dit le numéro d'ordre sert de point de repère pour les catégories mais il importe qu'ils soient dans l'ordre car sinon le rang dans la liste ne correspondrait plus.
Le numéro d'ordre pour les prestations sert au calcul de la plage, et cela fonctionne même si les numéros ne sont pas ordonnés, à condition qu'il restent groupés pour qu'on puisse prélever exactement la bonne plage (sinon tu aurais un mélange...)
Si tu es amené à des modifications fréquentes, il sera peut-être utile à un moment d'introduire un tri des plages pour les remettre dans un bon ordre. Cela ne fera que deux lignes de code supplémentaires (une pour chaque plage)...
Cordialement.
Désolé je suis vraiment pas très doué tu remplaces quoi par le code que tu viens de me donner ?
Cordialement
Tu ouvres le Gestionnaire de noms (onglet Formules sur le ruban).
Tu vas trouver 2 noms : tu sélectionnes Catég, tu vois qu'il est défini (dans la zone inférieure) par :
='Base de donnée'!$B$2:$B$17
Tu cliques sur Modifier, et tu remplaces cette référence par la formule de mon post précédent, et tu valides...
Merci beaucoup ça fonctionne parfaitement