Renvoyer la chaine de caractère la plus ressemblante entre une cellule et une BDD

baden

XLDnaute Nouveau
Bonjour,

Pratiquant Excel depuis quelques années, je me suis toujours trouvé limité lors de mes recherchev par le fait que excel recherche les valeurs exactes et ne raisonne pas sur un pourcentage de ressemblance entre 2 chaines de caractères.
Je n'ai pas encore trouvé une solution à ce sujet.

Je suis en possession de 2 fichiers :
- une liste de modèle de produits "officielle" d'un fabricant
- et des dizaines de listes plus ou moins inspiré des dénominations commerciales officielles du fabricant utilisés dans les CRM client
Bien sur entre les 2 pas de "clef primaire" pour lier les deux à tout les coups...

Exemple nom officiel : Nutella 500 XGTD
Nom utilisé par les clients : Nutella Pot moyen 500G

Et bien sur pas moyen de lier ces 2 données alors qu'elles ont beaucoup de similitudes.

Alors je souhaiterais pouvoir renvoyer dans la cellule A2
- La valeur de la base de donnée officielle la plus ressemblante à la cellule A1 (dénomination client).
- + si la valeur affichée la plus ressemblante n'est pas la bonne, une liste déroulante de choix, pour choisir entre d'autres valeurs de la BDD ayant des points communs, classées par "pourcentage" de ressemblance.

Le tout simple à utiliser pour une quiche en VBA comme moi...

Des idées?
Une solution simple à ce problème me changerais pas mal la vie...
 

Pièces jointes

  • Afficher la valeur la plus ressemblante d'une BDD.xlsx
    12.3 KB · Affichages: 117

CISCO

XLDnaute Barbatruc
Re : Renvoyer la chaine de caractère la plus ressemblante entre une cellule et une BD

Bonsoir

Il me semble que J. Boisgontier avait fait une macro fort pratique sur ce sujet, mais je ne retrouve plus le fil correspondant, ni de mot clef permettant de faire une recherche plus efficace...

Si cela dit quelque chose à d'autres...

@ plus
 

Modeste geedee

XLDnaute Barbatruc
Re : Renvoyer la chaine de caractère la plus ressemblante entre une cellule et une BD

Bonsour®
voir :
Excel Developer Tip: Searching Using Soundex Codes
http://spreadsheetpage.com/downloads/xl/soundex.xls

voir aussi algorithme double metaphone (a convertir en VBA...)
https://github.com/maritz/js-double-metaphone/blob/master/double-metaphone.js


amelioration pour ecriture française :
Code:
Private Function Category(c) As String
'   Returns a Soundex code for a letter
'Version pour le français :
'1 = B, P
 '2 = C, K, Q
' 3 = D, T
 '4 = L
' 5 = M, N
 '6 = R
 '7 = G, J
' 8 = X, Z, S
 '9 = F, V
    Select Case True
        Case c Like "[AEIOUY]"
            Category = "/"
        Case c Like "[BP]"
            Category = "1"
        Case c Like "[CKQ]"
            Category = "2"
        Case c Like "[DT]"
            Category = "3"
        Case c = "L"
            Category = "4"
        Case c Like "[MN]"
            Category = "5"
        Case c = "R"
            Category = "6"
        Case c Like "[GJ]"
            Category = "7"
        Case c Like "[SXZ]"
            Category = "8"
        Case c Like "[FV]"
            Category = "9"
            
        Case Else 'This includes H and W, spaces, punctuation, etc.
            Category = ""
    End Select
End Function
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Renvoyer la chaine de caractère la plus ressemblante entre une cellule et une BD

Bonjour,

Version1:
-On suppose que les références sont du type xx-xxx comme sur l'échantillon fourni
-Une fonction perso extrait le code

Code:
Function CodeRef(chaine)
  p = 1
  Code = ""
  Do While p <= Len(chaine) - 5 And CodeRef = ""
    If Mid(chaine, p, 6) Like "##-###" Then CodeRef = Mid(chaine, p, 6) Else p = p + 1
  Loop
End Function

=RECHERCHEV(CodeRef(D2)&"*";$A$2:$A$9;1)

Version 2

Avec notation

Cf PJ


JB
 

Pièces jointes

  • Copie de Afficher la valeur la plus ressemblante d'une BDD2.xls
    40.5 KB · Affichages: 181
  • Copie de Afficher la valeur la plus ressemblante d'une BDDNutella.xls
    55 KB · Affichages: 143
  • Afficher la valeur la plus ressemblante d'une BDDNotationDV.xls
    70 KB · Affichages: 296
Dernière édition:

baden

XLDnaute Nouveau
Re : Renvoyer la chaine de caractère la plus ressemblante entre une cellule et une BD

Un grand merci à vous,
le dernier fichier de Boisbontier avec le choix des probables est top!

Pour les débutants comme moi info pour changer la source de la base de donnée dans les propositions:
suite au message ("impossible de modifier une partie de la matrice ", validez par ctrl Maj Entré)


Sinon peux-tu expliquer à quoi correspond le système de notation (X/Z)?

Encore merci !
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Renvoyer la chaine de caractère la plus ressemblante entre une cellule et une BD

-La notation x/y signifie que l'on a trouvé X mots parmi les Y mots du catalogue

Pour la fonction perso matricielle

-sélectionner G2:K2
=RefOff3(A2;BD!$A$2:$A$1000)
-Valider avec maj+ctrl+entrée

JB
Formation Excel VBA JB
 

Pièces jointes

  • BDDNotationDV.xls
    70.5 KB · Affichages: 209
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves