Algorithme Levenshtein automatisé - recherche de la meilleur

Y compris Power BI, Power Query et toute autre question en lien avec Excel
g
gorabana
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 26 février 2014
Version d'Excel : 2013

Message par gorabana » 26 février 2014, 06:28

Bonjour,
Tout d'abord merci à toutes les personnes qui voudront bien répondre à mes questions.

Je souhaiterais faire un matching sous Excel entre deux feuilles de calcul qui contiennent des données différentes.
Certaines personnes sont présentes sur ces deux feuilles, ce qui m'emmène à vouloir générer un seul fichier, le plus complet possible.

J'ai donc dans ma feuille 1 :
Colonne A : Nom
Colonne B : Adresse
Colonne C : Code Postal
Colonnes D à K : infos diverses

J'ai dans ma feuille 2 :
Colonne A : Nom
Colonne B : Adresse
Colonne C : Code Postal
Colonne D : Numéro de téléphone

Ainsi donc, je souhaiterai récupérer le numéro de téléphone de la colonne D de la feuille 2 et l'intégrer dans la colonne L de la feuille 1.
Cela, en minimisant la distance de levenshtein ou en maximisant le pourcentage de similitude entre les deux chaînes de caractère.

Cela implique donc de faire pour chaque ligne de la feuille 1 un matching vers l'ensemble des lignes de la feuille 2, de garder en mémoire les résultats obtenus, prendre le meilleur résultat possible et récupérer le numéro dans la colonne D de la feuille 2 qui correspond à la ligne qui génère le meilleur résultat et l'intégrer dans la colonne L de la feuille 1.

J'ai trouvé des ressources sur :
http://stackoverflow.com/questions/1634 ... n-distance
http://stackoverflow.com/questions/4243 ... e-in-excel

Les fonctions fonctionnent (sauf la dernière, qui est selon la description 17 fois plus vite, mais qui fonctionne en 64 bits), mais je n'arrive pas à "boucler" la fonction levenshtein, à "stocker" les résultats en mémoire, à "sélectionner" le meilleur résultat, puis à "récupérer" le contenu pour l'intégrer dans une autre feuille.

Enfin, s'il est possible de pouvoir "pondérer" le matching entre les deux feuilles pour chaque colonne, ce serait parfait. Exemple, 0% d'erreur accepté pour le code postal, mais 5% d'erreur accepté pour le nom et l'adresse ... ( Car toutes les informations n'ont pas le même pouvoir / le même poids)

Quelqu'un pourrait-il m'apporter une aide pour résoudre ce problème ?

Merci d'avance.
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 7'785
Appréciations reçues : 211
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 1 mars 2014, 13:23

bonjour,

une exemple dans le fichier joint

ajuster les paramètres dans la feuille "paramètres" et lancer la macro findphone via ALT-F8

si la fonction levenshtein ne fonctionne pas chez toi, copie une autre version.
levenshtein.xlsm
(19.95 Kio) Téléchargé 519 fois
g
gorabana
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 26 février 2014
Version d'Excel : 2013

Message par gorabana » 3 mars 2014, 05:37

Mille merci, je vais faire quelques test mais semble t-il que c'est exactement ce que je recherchais.
Je vous tiens au courant dans la journée !
Merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message