ITSkillsCenter
Bureautique & Productivité

Excel : détecter les doublons flous avec fuzzy matching

3 دقائق للقراءة
Miniature - Excel : détecter les doublons flous avec fuzzy matching

Le problème des doublons non identiques

Dans une base clients consolidée depuis 3 sources, on retrouve souvent « Mamadou Diallo », « M. Diallo » et « Diallo Mamadou » pour une même personne. La fonction SUPPRIMER.DOUBLONS ne voit aucun doublon. Le fuzzy matching (correspondance approximative) résout ce problème critique pour tout CRM, ERP ou dashboard commercial fiable.

Power Query : fusion avec correspondance approximative

Accueil > Fusionner des requêtes. Sélectionnez deux tables (ou la même table à elle-même). Cochez Utiliser la correspondance approximative. Ajustez le seuil de similarité (0 à 1).

  • 0,8 : correspondance forte (recommandé pour commencer)
  • 0,7 : correspondance moyenne, plus de faux positifs
  • 0,9 : très strict, manque des vrais doublons

Préparation des données

Avant fuzzy matching, normaliser :

  • Mettre en majuscules
  • Supprimer les espaces multiples
  • Supprimer les accents (é → e)
  • Retirer les titres (M., Mme, Dr)
  • Trier prénom/nom dans un ordre constant

En M : Text.Upper(Text.Remove(Text.Trim(ligne), {".",",","(",")","-"}))

Cas pratique : dédoublonnage clients e-commerce

Base Shopify : 15 000 clients. Nombreux doublons liés à des fautes de frappe dans les emails et noms. Après fuzzy matching :

  • 1 200 paires détectées à score 0,85+
  • Validation manuelle sur échantillon : 95 pour cent vrais doublons
  • Fusion effective : -8 pour cent de la base, gain de qualité

Algorithme Levenshtein en VBA

Si Power Query ne suffit pas, implémentez la distance Levenshtein :

Function Levenshtein(s1 As String, s2 As String) As Integer
    Dim a As Integer, b As Integer
    Dim matrix() As Integer
    a = Len(s1) : b = Len(s2)
    ReDim matrix(a, b)
    For i = 0 To a : matrix(i, 0) = i : Next
    For j = 0 To b : matrix(0, j) = j : Next
    For i = 1 To a
        For j = 1 To b
            Dim cost As Integer
            cost = IIf(Mid(s1, i, 1) = Mid(s2, j, 1), 0, 1)
            matrix(i, j) = Application.Min(matrix(i-1, j)+1, matrix(i, j-1)+1, matrix(i-1, j-1)+cost)
        Next
    Next
    Levenshtein = matrix(a, b)
End Function

Similarité = 1 – Levenshtein(s1, s2) / Max(Len(s1), Len(s2)).

Phonétique : Soundex et Metaphone

Pour des noms mal orthographiés : Soundex regroupe les sons similaires. « Diallo » et « Dialo » ont le même code Soundex. Utile sur des listes de noms africains où plusieurs orthographes coexistent.

Cas particuliers africains

  • Noms avec particules : « Ba » et « Ndiaye Ba » peuvent être la même personne
  • Translitération arabe vers français : « Muhammad » vs « Mohammed »
  • Prénoms composés avec variations : « El Hadji » vs « El Hadj » vs « Alhadji »

Créez un dictionnaire de synonymes dédié à votre base.

Workflow recommandé

  1. Normaliser agressivement
  2. Fuzzy matching Power Query à seuil 0,85
  3. Exporter les paires détectées vers une feuille Révision
  4. Validation humaine oui/non/incertain
  5. Fusion automatique des validés, archivage pour audit

Conclusion

Le fuzzy matching est une compétence rare qui fait la différence entre une base de données propre et une base polluée. Pour tout dirigeant qui prend des décisions basées sur ses données, c’est un investissement prioritaire.

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité