VBA Moteur de recherche à adapter

Bonjour,

Dans un post d'Excel-pratique dont ci-dessous le lien, l'utilisateur vba-new donne une solution d'un tableau de données avec un moteur de recherche.

https://forum.excel-pratique.com/excel/creation-d-un-moteur-de-recherche-renvoi-d-informations-t28892.html

Je souhaiterais savoir s'il est possible d'adapter cet exemple de sorte que le moteur de recherche fasse la recherche avec plusieurs mots clés, sur les colonnes C-D-E du tableau de données, et pas seulement la colonne E comme c'est le cas dans cet exemple.

Ce serait super sympa si vous pouviez m'aider car je suis débutante sur VBA. Merci à l'avance.

Bonjour Clacha,

A priori, il ne devrait y avoir aucun obstacle à adapter du code à ta situation ...

As-tu un petit fichier de référence que tu pourrais joindre à ton prochain message ...?

Bonjour James007,

Tout d'abord, merci beaucoup de m'aider.

Ci-joint le même fichier que celui posté dans l'exemple en ligne sur excel-pratique via le lien que j'ai donné.

bien cordialement

Re,

Je me suis mal exprimé ...

Je faisais allusion à l'adaptation du filtre ... car le code de l'exemple n'est pas "dynamique" ... au sens que si tu changes par exemple les titres des colonnes ... le formulaire ne s'ajuste pas automatiquement ...

Je vais te préparer une première ossature pour tes recherches ... que l'on améliorera par la suite ...

Je comprends ce que tu me dis.

Mais en fait, j'avais juste besoin d'un exemple de moteur de recherche qui fonctionne avec plusieurs colonnes.

Puis, j'aurais appliqué cet exemple à mon cas perso, en réécrivant tout le code par rapport aux colonnes de mon fichier.

Tu comprends ?

Re,

Tu parles de "moteur de recherche" ... il s'agit en fait de filtrer des données ...

Du coup, as-tu vraiment besoin d'un formulaire ... et de macros ...

Car cela se fait très facilement ... sans cette interface ...essentiellement cosmétique ...

Désolée, j'ai parlé de "moteur de recherche" car c'est ce qui est inscrit dans le bouton du fichier exemple de mon post.

Si tu dis que cela ne s'appelle pas un "moteur de recherche" mais qu'il s'agit en fait de "filtrer des données" alors je te fais confiance.

Ce qui est sûr pour mon projet :

j'aimerais aider les utilisateurs dans la recherche rapide de données d'un fichier grâce à la saisie de mots-clés dans une zone. Ces mots-clé seront soit : Nom d'un fournisseur, une partie du libellé des articles, ou directement un n° de contrat s'ils le connaissent. Pour la confidentialité, malheureusement, je ne peux pas mettre en pj mon fichier sur lequel je voudrais appliquer ce filtre automatique (et non moteur de recherche).

merci pour ton aide

Re,

Je te propose la chose suivante :

1. Tu fais une copie de ton fichier

2. Dans le fichier copié, tu supprimes toutes les lignes sauf les 10 premières ...

3. Puis, dans les 10 premières lignes, tu remplaces tout ce qui est confidentiel par des lettres de l'alphabet ...

4. Ensuite tu peux joindre ce fichier test ...

D'accord je prépare ce fichier tel que tu l'évoques.

merci beaucoup pour ta sollicitude

Clacha,

A titre purement illustratif, je te joins un fichier test ...

Cependant, je suis persuadé, sur la base de la description que tu as faite de ton problème ... que cette solution n'est pas véritablement adaptée à ta situation spécifique ... mais, dans la mesure où tu m'avais lancé sur cette piste ...

Voici mon fichier de données sans les données confidentielles.

J'aimerais que le bouton de recherche soit bien visible, donc par exemple, en cellule G1 ou H1.

Encore merci

Parfait ... !!!

Ton fichier pour tester est tout à fait représentatif ...

Nous sommes d'accord que tu as besoin de faciliter la vie des utilisateurs pour que le filtre avancé se fasse le plus facilement possible sur les champs suivants :

  • N° Contrat
  • Poste
  • N° Fournisseur

Me trompe-je ?

Les champs à appliquer sur le filtre sont plutôt :

  • Type d'achat
  • Nom fournisseur
  • N° contrat (mais pas le poste car cela ne servirait pas vraiment dans une recherche étant donné que tous les contrats ont au moins le poste 10)
  • Article
  • Désign.article
  • Fin (permettrait de visualiser d'un coup tous les contrats qui arrivent bientôt en fin d'échéance)
  • Contrat géré par (dans la colonne concernée, on aura un nom de personne)

Voilà, et merci


Si tu trouves qu'il y a trop de champs, et dans un souci de simplification, ne prends pas ces deux champs :

  • Article
  • Contrat géré par

Re,

Ci-joint une ossature à partir de laquelle tu peux construire ...

Edit : pour l'exemple, seuls les trois premiers champs ont été codés pour éxécuter l'opération de Filtre ...

Merci beaucoup James.

Je vais partir de cette base.

Bonne soirée

cordialement

Merci pour tes remerciements ...

Bonne Continuation

Bonjour Clacha,

Suite à ton message MP, pourrais-tu expliquer le problème que tu rencontres avec le bouton Filtrer ?

Dans la mesure où tu as ajouté 4 champs de sélection aux 3 premiers...(tu parlais de colonnes C,D,E dans ton premier message...) Je ne t'ai codé que les trois premiers textboxes ...à titre d'exemple ...

J'ai trouvé et rectifié le pb. En fait, quel que soit le critère qui était saisi dans le filtre auto, c'était tjrs la colonne 4 qui était filtrée et elle ne retournait aucune valeur car la variable "scol" n'appelait pas les bonnes colonnes dans les différentes TextBox.

J'en profite pour te poser qq questions pour améliorer mes connaissances :

1 - personnellement, je n'ai pas la possibilité de créer de Label ni de LitsView dans ma boite à outils VBA. J'ai vu sur internet qu'on ne l'avait pas par défaut et qu'il faut télécharger une mise à jour de la librairie Windows Common Controls, ce que j'ai fait mais ça n'a rien donné de plus. Voilà où j'ai trouvé cette info :

https://legrandchamanexcel.wordpress.com/2011/05/11/creation-dun-userform-avec-controle-listview/

2- je ne savais pas qu'on pouvait mettre des variables dans des noms de macros, dans l'exemple que tu as développé, tu as mis : Call Filtrer(scrit, scol)

3- enfin, j'aimerai ajouter un bouton "réinitialiser" au filtre auto pour effacer le filtre actif sur le précédent critère saisi. Je te joints mon dernier fichier corrigé dans lequel j'ai réduis à 4 critères seulement pour simplifier les choses.

merci encore pour ton aide

Rebonjour James007

J'ai trouvé toute seule la solution à ma question :

comment réinitialiser le filtre à zéro ?

Je te joints le nouveau fichier de données avec :

  • un CommandButton3_Click() pour réinitialiser
  • la macro Réinitialiser que j'ai mise dans le module1

Regarde et dis-moi si tu es d'accord.

merci beaucoup, grâce à toi j'ai appris à me débrouiller

bon dimanche

Rebonjour Clacha,

Tu te débrouilles à merveille ...!!!

Toutes mes Félicitations ...

Pour que ta procédure de réinitialisation soit totalement terminée, il te suffit d'ajouter à ton code la remise à zéro de l'ensemble de tes quatre textboxes ...

Rechercher des sujets similaires à "vba moteur recherche adapter"