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é
- Normaliser agressivement
- Fuzzy matching Power Query à seuil 0,85
- Exporter les paires détectées vers une feuille Révision
- Validation humaine oui/non/incertain
- 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.