Chercher un produit dans un catalogue

paulise

XLDnaute Nouveau
Bonjour à tous,

Je vous explique ma problématique :
je dispose d'un catalogue qui référence environ 5000 produits avec dans la première colonne le code du produit et dans la seconde sa description.
Genre:
12345 Riz long thai 5kg
12344 Haricots verts TF 3/1
1111 Haricots verts TF 5/1
12222 Haricots verts s-sel TF 5/1
etc...
Les clients nous envoient une liste des produits pour lesquels ils souhaiteraient un devis mais chacun avec des descriptions personnelles,
Genre
Haricots verts très fins en boite 3/1
Haricots verts en boite 5/1
etc...
je souhaiterai trouver une solution pour ramener le code produit qui correspond le mieux à ce qui se trouve dans mon catalogue

J'ai tenté de séparer tous les mots dans mon catalogue et dans la demande du client, mais alors comment trouver la ligne où j'ai le plus de correspondance ?
pour l'exemple de la deuxième ligne demandée par le client, je voudrai qu'il me renvoie la 3ème ligne de mon catalogue parce que j'ai trois mots sur quatre alors que sur la quatrième ligne je n'en ai que 3 sur 5.
Mais peut-être que ma solution n'est pas la bonne et que vous en avez une bien meilleure ?
Merci de votre aide
 

JHA

XLDnaute Barbatruc
Re : Chercher un produit dans un catalogue

Bonjour à tous,

Un exemple de liste intuitive du forum

JHA
 

Pièces jointes

  • ListeIntuitive.xls
    66 KB · Affichages: 107
  • ListeIntuitive.xls
    66 KB · Affichages: 116
  • ListeIntuitive.xls
    66 KB · Affichages: 98

paulise

XLDnaute Nouveau
Re : Chercher un produit dans un catalogue

Bonjour,
alors pour commencer je ne comprends rien à la manière dont cela fonctionne.
mais surtout cela ne fonctionne que si l'intitulé est exactement le même et donc cela ne m'aide pas beaucoup puisque la difficulté c'est justement de trouver des occurrences qui correspondent au mieux puisqu'elles ne sont pas les mêmes. Dès qu'il y a un écart la macro plante.
Quelqu'un a-t-il une idée ?
Merci
 

JHA

XLDnaute Barbatruc
Re : Chercher un produit dans un catalogue

Re,

Désolé si ma réponse ne répond pas à tes attentes,
tu as un onglet "BD" où tu mets ta base de données (avec tes intitulés,codes, prix au besoin), ensuite, dans l'onglet "Devis" avec la liste client en main, tu tapes dans les lettres "clés" (exemple "Har") et tu auras la liste de toutes les sortes de "Haricots" dans le menu déroulant et tu choisis.

JHA
 

CBernardT

XLDnaute Barbatruc
Re : Chercher un produit dans un catalogue

Bonjour paulise, JHA,

Je trouve que le travail de JHA excellent par rapport aux explications données sur le premier post.

Comme dirait Gorfael :
Plus tu exposes moins clair et plus tu reçois moins clair !

Un classeur extrait du catalogue, base de données des produits, serait un moyen plus explicite de ton projet, avec à l'appui, une approche du résultat sur lequel tu souhaites nous aiguiller.
 

paulise

XLDnaute Nouveau
Re : Chercher un produit dans un catalogue

Rebonjour,
alors je recommence avec un exemple que j'espère plus parlant
J'ai donc un catalogue de produits dont les deux informations qui m'intéressent ici sont la référence du produit et sa désignation.
Le client m'envoie une liste de produits pour lesquels il souhaite que je lui donne un tarif, pour ce faire il me donne la désignation des produits qui correspond plus ou moins à ce que j'ai dans mon catalogue.
Je souhaite trouver une solution afin qu'il me renvoie le code du produit dans la désignation duquel il trouve le plus de mots concordants.
Exemple de catalogue:
Ref Désignation
1 tata tonton toto
2 vava vonvon vovo
3 dada dondon dodo
4 tata dada vava
5 tata lucas toto lucie tonton camille
6 dodo dada dondon

Demande client
tonton toto tata
lucas lucie magalie valerie

Résultat attendu:
Demande client Ref Produit Fournisseur
tonton toto tata 1
lucas lucie magalie valérie 5

Parce que :
Demande client Ref Produit Fournisseur Correspondance
tonton toto tata 1 3 mots /3 même si dans le désordre
lucas lucie magalie valérie 5 2 mots /6

Pour résumer je souhaiterai trouver des correspondances entre des chaines de mots qui ne sont pas strictement concordantes. d'où mon idée de départ de séparer tous les mots de mes désignations dans des cellules différentes, de même pour les demandes des clients, mais ensuite je ne sais pas comment trouver les lignes dans lesquelles j'ai au moins un mot qui correspond et compter dans chacune le nombre de mots concordants.

Mais il se peut que la solution que j'envisage soit irréalisable ou qu'elle le soit mais qu'il y ai beaucoup plus simple.
Encore merci de votre aide
 

paulise

XLDnaute Nouveau
Re : Chercher un produit dans un catalogue

J'ai essayé de faire une belle présentation, mais elle ne passe pas.
je vous joins le fichier.
 

Pièces jointes

  • exemple.xls
    36.5 KB · Affichages: 86
  • exemple.xls
    36.5 KB · Affichages: 90
  • exemple.xls
    36.5 KB · Affichages: 87

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Chercher un produit dans un catalogue

Bonjour,

Voir PJ


-Dans un module

Code:
Function MeilleureNote(DemClient)
  Set f = Sheets("catalogue")
  Set dMotsCat = CreateObject("Scripting.Dictionary")
  Set dRef = CreateObject("Scripting.Dictionary")
  For Each c In f.[B2].Resize(Application.CountA(f.[B:B]))
    dRef(CStr(c.Offset(, -1).Value)) = c.Value
    For Each m In Split(c.Value, " ")
     dMotsCat(m) = dMotsCat(m) & c.Offset(, -1) & " "
    Next m
  Next c
  Set dDemClient = CreateObject("Scripting.Dictionary")
  For Each m In Split(DemClient, " ")
    If dMotsCat.exists(m) Then
      For Each ref In Split(Trim(dMotsCat(m)), " ")
        dDemClient(ref) = dDemClient(ref) + 1
      Next ref
    End If
  Next m
  '-- recherche maxi dans dDemClient
  Maxi = Application.Max(dDemClient.items)
  MeilNotePourc = 0
  For Each ref In dDemClient.keys
    If dDemClient(ref) = Maxi Then
       notePourc = Maxi / (UBound(Split(dRef(ref), " ")) + 1)
       If notePourc > MeilNotePourc Then
          MeilNotePourc = notePourc: RefMeilNote = ref: MeilNote = Maxi & "/" & (UBound(Split(dRef(ref), " ")) + 1)
       End If
    End If
  Next ref
  MeilleureNote = RefMeilNote & " (" & MeilNote & ")"
End Function

-En B2: =meilleurenote(A2)

JB
Formation Excel VBA JB
 

Pièces jointes

  • MeilleureNote.xls
    65.5 KB · Affichages: 134
Dernière édition:

paulise

XLDnaute Nouveau
Re : Chercher un produit dans un catalogue

Bonjour
Ce code est vraiment très compliqué pour moi... je n'y comprends rien du tout.
Il ne fonctionne pas, il bug sur Set dMots = CreateObject("Scripting.Dictionary")
Je vais passer ligne par ligne pour essayer de comprendre, mais si vous avez encore un peu de temps à perdre pour m'aider, je veux bien quelques explications supplémentaires.
Je veux bien aussi savoir comment est né le dictionnaire Dmots dans la feuille devis, ainsi que le dictionnaire Ddem
Faudra-t-il mettre dans la cellule E3 la demande du client une par une ?
Je n'ai pas compris mais cela me donne quelques idées...
merci !
 

Discussions similaires

Réponses
36
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz