Comment trouver des numéros de téléphone dans n'importe quelle cellule en se basant sur le schéma (pattern) ?
Les numéros de téléphone sont aussi important qu'un numéro de carte bleue, qu'un email, un numéro de sécurité sociale. Ils permettent d'identifier une personne de façon unique mais également de déterminer le pays d'origine à partir de leur pattern.
Le terme pattern, c'est la dénomination pour caractériser une succession de chiffres, lettres et espaces qui permettent de repérer une information dans un texte. C'est la construction de ce pattern qui va être la clé de la réussite du projet.
Caractéristique des numéros de téléphone dans le monde.
La représentation des numéros de téléphone est (pratiquement) propre à chaque pays. Il y a certes quelques exceptions mais la plus part des pays ont un pattern qui lui ai propre. Parmi les exceptions nous avons :
- États-Unis = Canada (XXX) XXX-XXXX
- Belgique = Allemagne XXX XX XX XX
- Espagne = Portugal XXX XXX XXX
L'idée c'est à partir d'une liste de numéros de téléphone et de retrouver le pays d'origine et se basant sur chaque pattern.

Les Expressions Régulières (REGEX).
Les expressions régulières en informatique, représentent le moyen d'identifier dans une chaîne de caractères avec une même séquence de digits. Par exemple, pour une numéro de téléphone français, nous allons chercher
- 4 blocs de 2 chiffres + un espace et nous terminons par un bloc de 2 chiffres
- C'est cette séquence que nous devons traduire en regex
Les regex sont une succession de symboles qui sont déroutant au premier abord. Par exemple, le pattern pour trouver un numéro de téléphone français dans une cellule c'est (\d{2}[ .-]+){4}\d{2} 😱😱
- Pour comprendre la signification de chaque symbole, reportez-vous à cet article 💡
- Sinon pour pratiquer et comprendre l'impact de chaque symbole sur une chaine de caractère, vous avez le site regex101.com
- Mais vous pouvez aussi vous appuyer sur ChatGPT ou Copilot pour vous aider dans la construction de vos regex 😉
La fonction REGEXTEST
- Disponible avec Excel 365, Version 2406 (Devenir Office Insider)
Cette fonction va effectuer un test sur une chaîne de caractère et voir si une séquence particulière de symboles a été trouvé. Le résultat sera Vrai ou Faux.
=REGEXTEXT(Chaîne de caractères, pattern)
Prenons le cas du numéro de téléphone espagnol. Un numéro de téléphone espagnol se compose d'une série de 3 blocs de 3 chiffres (XXX XXX XXX). Traduite en expression régulière, cela donne (\d{3}[ .-]+){2}\d{3}
- Remarque : la colonne A n'est là qu'à titre informatif pour voir que ça marche.
- Le but de cet article c'est construire un test sur un pattern comme si la colonne A n'existait pas 😉

Mise en forme conditionnelle
Une utilisation très pratique de cette fonction, c'est de l'utiliser comme règle personnelle de mise en forme conditionnelle.

- Nous pouvons par exemple créer un tableau de patterns sur les numéros de téléphones.
- Puis remplacer le premier paramètre de la fonction REGEXTEST par une fonction RECHERCHEX.

Quelques REGEX pour trouver les pays selon le pattern du numéro de téléphone.
- France => (\d{2}[ .-]+){4}\d{2}
- Allemagne => \d{4}[\s.-]+(\d{2}[\s.-]+){2}\d{2}
- Espagne => (\d{3}[ .-]+){2}\d{3}
- Royaume-Uni => \d{5}[ .-]+\d{6}
- Pologne => \d{2}\s+\d{3}\s+\d{2}\s+\d{2}
- États-Unis => (?\d{3})?[-.\s]?(?\d{3})?[-.\s]??(?\d{4})?