Extraire des emails d'une chaîne de caractères n'est pas quelque chose de facile à réaliser. Chercher le symbole @, c'est facile. Mais ensuite ? 🤔
Il faut trouver la logique qui va nous permettre de trouver le début et la fin de l'email. Car de nombreux aux situations différente peuvent se présenter :
- @fournisseurs.com (nom + .com)
- @mon-entreprise.com (nom avec tiret + .com)
- @mysupplier.co.uk (nom + domaine en deux parties)
- @ma-start.up.com (nom + tiret et point avant le domaine)
- .....
Et c'est la même chose avec l'identifiant de l'email
- support@ (un seul mot)
- prenom.nom@
- p.nom@
- nom-p@
- agence-31@ (mélange de lettres et de chiffres)
Alors avec les fonctions traditionnelles d'Excel, il très difficile de répertorier tous les cas de figue mais avec les expressions régulières, c'est un jeu d'enfants 😀
Les fonctions TEXTE d'Excel
Pour extraire un email avec les fonctions TEXTE traditionnelles c'est extrêmement difficile à faire
- Il faut commencer par repérer le @ dans le texte avec la fonction CHERCHE.
- Puis trouver la position du point qui suit
- Et ensuite, se décaler de 2 ou 3 caractères (pour les .fr ou .com). Déjà il y a des risques d'erreurs
- Mais c'est surtout pour trouver le début de l'email, donc les caractères avant le @, que c'est quasi-impossible de trouver une formule appropriée.
Une approche pour trouver le caractère "espace" avant le @ serait d'utiliser la fonction SUBSTITUE comme c'est expliqué dans cet article.
Le remplissage instantané
Une solution plus simple consisterait à utiliser le Remplissage Instantané pour extraire les emails. Si la position des emails étaient toujours la même (au début ou à la fin de chaîne de caractères), le remplissage instantané pourrait faire le travail. Mais dans notre cas, il ne comprend pas la logique et retourne n'importe quoi.
Extraire les emails avec les expressions régulières (REGEX)
Mais depuis l'arrivée des expressions régulières dans Excel, ce travail est grandement simplifié. Nous allons utiliser la fonction REGEXEXTRACT pour extraire les emails en fonction du pattern (schéma).
- La fonction REGEXEXTRACT est disponible avec Excel 365, Version 2406 (Devenir Office Insider)
Extraire tous les emails : \S+@\S+
Nous allons construire un pattern qui va recherchercher tous les caractères différents d'un espace avant et après le @
Extraire tous les emails des employés de mon entreprise
- Ici nous allons nous focaliser sur le domaine mon-entreprise.com
- Et pour sélectionner le mail des employés, il faut trouver le pattern texte point texte
- Le pattern est le suivant : "\w+\.\w+@mon-entreprise.com"
De cette façon, les emails tels que remboursement, confirmation, facturation, ne sont pas retenus
Exclure les emails avec des chiffres
Si nous voulons faire un mailing à caractère professionnel, nous ne voulons pas retenir les mails avec des chiffres dans l'identifiant. Dans ce ca le pattern sera "[a-zA-Z.-+@\S+"