XL 2010 Rechercher plusieurs mots dans une cellule : RechercheV suffit-il ? SUITE

thierry.petiteau

XLDnaute Nouveau
Bonjour à tous

Tout d'abord merci à Robert qui m'a apporté une réponse par la méthode VBA.
Cependant je reviens vers la communauté pour savoir si mon souci ne pourrait pas se solutionner par 1 ou des formules.

Objectif : alimenter un fichier client par des infos que j'ai dans ma base de données avec des critères de recherche qui sont plusieurs mots combinés

Je vous invite à ouvrir mon exemple en pj où tout est expliqué (en espérant avoir été clair... ;-) )

Merci d'avance

Cdlt

Thierry
 

Pièces jointes

  • TEST RECHECHEV2.xlsx
    14.7 KB · Affichages: 17

Dudu2

XLDnaute Barbatruc
Bonjour,

Comprends pas.
Pour Coca Cola Light Boîte 33 Cl Coca Cola, c'est quoi ce que tu recherches ?
Chaque mot indépendamment ?
Des groupes de mots particuliers ? Comment identifier ces groupes ?
La totalité de la "phrase" ?

1606571670136.png
 

Dudu2

XLDnaute Barbatruc
la totalité de la cellule ou du moins le maximum de mots communs entre mon fichier et celui de mon client cellule par cellule
Je crois qu'il faudrait un peu clarifier.
1 - Soit tu cherches le contenu de la cellule dans la 1ère colonne du tableau de la feuille BDD, et ça c'est une formule simple.
2 - Soit tu cherches les mots individuellement et le résultat est la combinaison avec un opérateur logique OU des cellules trouvées et c'est une fonction personnalisée VBA.
3 - Soit tu cherches les mots individuellement et le résultat est la / les meilleures fréquences d'apparition dans les cellules trouvées et c'est une fonction personnalisée VBA.
4 - Soit tu cherches des groupes de mots (donc séparer ces groupes dans la feuille Formulaire par un caractères séparateur précis, par ex: "/") et on repart sur 2 et 3 avec les groupes
 

Dudu2

XLDnaute Barbatruc
Soit tu cherches par correspondance exacte, avec RECHERCHEV VRAI ou FAUX comme tu l'as fait mais ça ne te plait pas.
Soit tu cherches avec des combinaisons de mots (par VBA) et cela va forcément trouver plusieurs références alors que tu n'en veux qu'une seule à la sortie.

En plus je suppose que le "client" saisit les mots comme ça lui vient et sûrement pas dans l'ordre défini dans la BDD. Aucune formule ne permet de faire ça.
La seule solution réaliste et utilisable serait de créer une liste dynamiquement remplie en sélectionnant les articles de la BDD contenant les mots saisis au fur et à mesure de la saisie avec possibilité de choix dans la liste qui deviendrait d'autant plus courte que le nombre de mots saisi pour la sélection serait plus grand. Puis reporter ce choix (Libellé & Référence) dans la formulaire client sur la ligne où il aurait par exemple double-cliqué pour faire apparaître le formulaire de saisie/sélection.
 
Dernière édition:

thierry.petiteau

XLDnaute Nouveau
Whouaoooo ! c classe :)


Donc si j'ai bien compris aucune formule ne permet de rechercher les libellés à part le RechercheV et les conditions VRAI, FAUX ou rien pour trouver la valeur la plus proche. OK

Donc on partirait sur une solution VBA ça me convient sauf que sur une base client de 5000 produits il va falloir rechercher manuellement ces 5000 ref et ça c'est dommage et quasi impossible....

MERCI en tout cas pour ton aide 👍
 

Dudu2

XLDnaute Barbatruc
Donc on partirait sur une solution VBA ça me convient sauf que sur une base client de 5000 produits il va falloir rechercher manuellement ces 5000 ref et ça c'est dommage et quasi impossible....
Il n'est pas question de recherche manuelle si on fait du code VBA. Je ne comprends pas.
Il est question de savoir comment tu gères le fait qu'il y a plusieurs réponses à la recherche "COCA ZERO 33" alors que tu cherches une référence unique.

De plus ton client va-t-il saisir exactement "BTE" pour boîte et "25CLX24" pour 25 CL fois 24 ?
Y a un truc qui m'échappe dans le but que tu recherches et qu'il me semblait avoir atteint avec le fichier envoyé, c'est à dire permettre à un client de choisir un produit dans la liste BDD et de ramener sa référence.

Mais bon, c'est pas critique.
 

Dudu2

XLDnaute Barbatruc
Ton truc est totalement irréalisable car il n'y a aucune homogénéité dans les libellés qui nomment les produits autant dans la BDD que dans la grille de saisie. C'est le chaos complet.
Tu projettes une recherche "de pensée" sur une liste et des critères de recherche totalement incohérents. Et c'est pour ça que tu n'arrives pas à expliquer comment faire la recherche.
Quant à le faire avec un formule...!

J'ai quand même essayé de faire cette recherche qui est basée sur 2 étapes.
1 - Tentative d'homogénéisation des termes et de leurs juxtapositions
Voir la fonction LogiqueFloue() dont le contenu peut être amélioré avec d'autres Replace si besoin:
VB:
    Libellé = Replace(Libellé, "BOITE", "BTE")
    Libellé = Replace(Libellé, "SUCRES", "SUCRE")
    Libellé = Replace(Libellé, "COCACOLA", "COCA COLA")
    Libellé = Replace(Libellé, "1,25L", "125CL")
    Libellé = Replace(Libellé, "1,5L", "150CL")
    Libellé = Replace(Libellé, "CL", " CL ")
    Libellé = Replace(Libellé, "X", " X ")
    Libellé = Replace(Libellé, "-", " ")
2 - Sélection de l'item BDD dont le libellé a le plus de mots communs avec le libellé cherché et dont le ratio Nombre de mots trouvés / Nombre de mots du libellé BDD est le plus élevé.

Ceci dit, ça ne garantit pas à 100% le meilleur choix d'item BDD car d'autres éléments que je n'ai pas dans la BDD réduite doivent peut-être subir le traitement en LogiqueFloue() .

D'autre part, pour accélérer les traitements, la feuille BDD n'est lue qu'au début de la session Excel.
De sorte que si tu la modifies, il faut fermer et ré-ouvrir le classeur pour que ce soit pris en compte dans la recherche. Ou si besoin je peux ajouter un bouton de rechargement de BDD.
 

Pièces jointes

  • Référence articles.xlsm
    124.8 KB · Affichages: 9
Dernière édition:

thierry.petiteau

XLDnaute Nouveau
Merci pour ta persévérance même si je t'avoue que j'ai du mal à comprendre car je ne maîtrise pas le VBA. Où je te rejoins c'est dans le mot "chaos complet" de cette BDD qui est à ce jour administrée par trop de personnes sans recul analytique.
Je vais étudier ta proposition avec mon service Data.
MERCI encore
Cdlt
Thierry
 

Discussions similaires

Statistiques des forums

Discussions
314 738
Messages
2 112 342
Membres
111 515
dernier inscrit
dida38