Lister des valeurs suite à une boucle sur une colonne contenant des cellules égales à fréquences va

Ark30

XLDnaute Junior
Bonsoir le forum,
Pourriez-vous m'indiquer comment résoudre le problème suivant ?:
J'ai une colonne A contenant des cellules qui sont égales à des fréquences variées (Exemple A1, A2, A3 contiennent 0543, A4, A5 contiennent 0986, etc.)
La colonne B contient pour chaque groupe de cellules identiques de la colonne A des valeurs qui sont soit "approximativement égales " (par exemple, B1 contient "Jean Dupont", B2 contient "Dupont Jean", B3 contient "M. Jean Dupont"), soit différentes (A4 contient "Toto", A5 contient "Tata").
Je souhaiterais lister les valeurs de la colonne A qui référencent la même valeur de la colonne B (selon l'exemple, la valeur 0543 sera listée car elle référence "Jean Dupont").
Merci beaucoup,
 

Ark30

XLDnaute Junior
Bonsoir le forum,
Pourriez-vous m'indiquer comment résoudre le problème suivant ?:
J'ai une colonne A contenant des cellules qui sont égales à des fréquences variées (Exemple A1, A2, A3 contiennent 0543, A4, A5 contiennent 0986, etc.)
La colonne B contient pour chaque groupe de cellules identiques de la colonne A des valeurs qui sont soit "approximativement égales " (par exemple, B1 contient "Jean Dupont", B2 contient "Dupont Jean", B3 contient "M. Jean Dupont"), soit différentes (A4 contient "Toto", A5 contient "Tata").
Je souhaiterais lister les valeurs de la colonne A qui référencent la même valeur de la colonne B (selon l'exemple, la valeur 0543 sera listée car elle référence "Jean Dupont").
Merci beaucoup,
 

eriiic

XLDnaute Barbatruc
Bonjour,

En préambule je dirais n'attend pas trop de miracles !
C'est un problème complexe à traiter, donc résultat approximatif.
Il faudra valider les résultats.
De plus les opérations sur les chaines, multiples ici, sont lentes. Donc si tu as beaucoup de lignes...

Ceci posé, un essai quand même.
Déjà je normalise les noms en ôtant les caractères ". - ' ", en supprimant les mots de moins de 3 lettres, et en triant le reste par ordre alpha.
Ensuite je calcule la distance de Levenshstein relative, 2 à 2 sur chaque groupe
En gros plus la note (de 0 à 1) est élevée, plus les noms diffèrent. Je retiens la note maxi du groupe.

J'ai crée ensuite 3 états :
- lev = 0 : les noms normalisés sont identiques => "ok"
- 0 < lev < 0.3 : doute => "Contrôler"
- lev >= 0.3 non ok => "nok"
A toi de choisir les seuils pour avoir le moins de fausses détections en testant sur un fichier plus réel.
eric
 

Pièces jointes

  • Classeur4.xlsm
    21.5 KB · Affichages: 19

Ark30

XLDnaute Junior
Merci bcp eriiiic!
Pour simplifier le problème, est ce que tu penses que je pourrai par exemple juste tester pour les cellules de même id si les cellules qui suivent celles sur laquelle on fait le test contiennent juste 1 ou 2 chaînes (ce sera suffisant dans mon cas après avoir bien entendu supprimé les chaînes de moins de 3 lettres comme tu as si bien proposé pour normaliser)
Je pense à un split pour extraire les chaînes et tester si les cellules contiennent la ou les 2 chaînes.
Merci infiniment pour ta précieuse aide!
 

eriiic

XLDnaute Barbatruc
Il peut n'y avoir que Dupont sans prénom ? Et si on a Dupont suivi de Dupond c'est donc faux.
Analyse ton fichier et regarde tous les cas pour les fournir.
Je verrais ce que je peux faire mais je ne reviendrais plus dessus ensuite.
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

Si ce n'est pas trop tard, des travaux qui se passaient mal m'ont occupé...
Donc je découpe tous les noms d'un même id pour les recenser (n éléments du nom).
Ensuite je contrôle que chaque nom de l'id ait au moins n-1 élément pour déclarer l'id ok.
Je t'ai mis le résultat sous 2 formes, garde celle qui t'intéresse le plus
eric
 

Pièces jointes

  • Classeur4.xlsm
    23 KB · Affichages: 11
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 149
Messages
2 085 773
Membres
102 971
dernier inscrit
Mathieu49