Comment extraire automatiquement les adresses mails d’un texte ?

cover_extraire_adresses_mails_texte_google_sheets_regex
Partager cet article

Vous avez peut-être déjà été confronté à cette situation difficile ou vous avez des textes et vous souhaitez extraire ou récupérer que certaines informations sur l’ensemble de ces textes.

Plutôt que de faire un tri puis des copier/coller manuellement pendant des heures, je vais vous montrer des solutions pour récupérer et extraire les adresses mails automatiquement de tous vos textes.

Si vous souhaitez extraire d’autres informations comme les numéros de téléphone ou d’autres éléments d’un texte. Je vous invite à consulter les autres articles mon blog ou de me faire la demande de votre besoin.

Extraire automatiquement les adresses mails via Google Sheets

Google Sheets et les tableurs sont des outils très puissants qui, avec les bonnes fonctions et bonnes formules, vous permettent de résoudre presque tous vos problèmes.

Dans cet exemple où nous souhaitons extraire uniquement les adresses mails des textes, nous allons utiliser les RegEx.

Définition de « RegEx »

RegEx est une abréviation de l’anglais regular expression que l’on traduit par expression régulière. Une expression régulière va être une suite de caractères qui va décrire un ensemble de chaînes de caractères.

Wikipédia donne un exemple assez parlant, on peut ainsi condenser « ex-équo, ex-equo, ex-aequo et ex-æquo » en une seule expression « ex-(a?e|æ|é)quo »

Vous pouvez retrouver la syntaxe des expressions régulières de Google pour mieux comprendre comment cela fonction sur ce lien : support.google.com

Bref, reprenons notre sujet.

La fonction RegEx pour extraire les adresses mails

Sur Google Sheets, il existe trois fonctions qui permettent d’utiliser et de jouer avec les expressions régulières :

  • =REGEXMATCH : Indique si une partie d’un texte correspond à une expression régulière ;
  • =REGEXEXTRACT : Extrait les sous-chaînes qui correspondent à une expression régulière ;
  • =REGEXREPLACE : Remplace une partie d’une chaîne de texte par une autre chaîne en utilisant des expressions régulières.

Pour notre problématique d’extraction des adresses mails, nous allons principalement utiliser =REGEXEXTRACT

Extraire toutes les adresses mails du texte

La fonction la plus complète, à mon sens, pour extraire les adresses mails des textes via une RegEx est :


=ARRAYFORMULA(TEXTJOIN(" ";1;IFERROR(REGEXEXTRACT(SPLIT(A1;" ");"([a-zA-Z0-9-À-ú'_.-]+?@[a-zA-Z0-9-À-ú_.-]+?\.[a-zA-Z]{2,3})");"")))

Pensez à changer le A1 par la cellule qui contient le texte ou vous souhaitez extraire les adresses mails

Voici un exemple de son utilisation :

Pourquoi la formule plus complète à mon sens ? Car elle prend en compte de nombreux facteurs et variantes qui peuvent intervenir dans une adresse mail :

  • Elle va vous permettre d’extraire toutes les adresses mails présentes dans un texte et non pas uniquement la première qui est détecté ;
  • Elle prend en compte les accents dans le texte. Même si les adresses mails n’ont pas d’accent il s’agit tout de même de texte et cela peut remédier à certaines coquilles et erreurs humaines ;
  • Cette formule prend en compte les autres caractères autres que les simples lettres (les traits d’union, les points au début de l’adresse mail ou encore les numéros) ;
  • Elle prend aussi en compte toutes les différentes extensions des adresses mails (.gmail, .live, .outlook, .gmx, .nddentreprise …)

💡 Chaque adresse mail sera séparée pas un espace. Si vous souhaitez que les adresses mails soient séparées par un point-virgule, il suffit de changer la partie juste après le TEXTJOIN en remplaçant l’espace entre guillemet par le ou les caractères que vous souhaitez.

💡 Cette formule ne prend en compte que les 2 ou 3 premiers caractères des extensions de NDD (.io, .com, .fr …). Pour avoir des NDD de plus de 3 caractères, il faut modifier le {2,3} par {2,X} X étant le nombre de caractères que vous souhaitez.

Extraire uniquement la première adresse mail du texte

Si vous souhaitez uniquement la fonction REGEXEXTRACT qui va extraire la première adresse mail du texte là voici :


=REGEXEXTRACT(A1;"([a-zA-Z0-9-À-ú'_.-]+?@[a-zA-Z0-9-À-ú_.-]+?\.[a-zA-Z]{2,3})")

Au-delà d’une simple cellule avec un petit texte. Vous pouvez aussi très bien voir beaucoup plus grand car le traitement des tableurs n’a pas de limite.

Les formules peuvent ainsi s’appliquer à des documents, des ebooks, des livres blancs, des pdf, des fichiers Words ou encore des fichiers Google docs.

Sur l’ensemble de ces documents, tant que vous avez la possibilité de faire un copier/coller des textes. Il vous suffira uniquement de le copier dans une cellule et d’y appliquer la formule précédente pour extraire automatiquement l’ensemble des adresses mails présentes dans le document.

💡 Bon à savoir : les messageries mails ne sont pas sensibles à la casse. Si les adresses mails récupérées ont des majuscules vous pouvez les utiliser telles quelles ou appliquer une formule pour toutes les passer en minuscule.

Comment séparer vos résultats sur plusieurs cellules horizontalement et verticalement ?

Séparer les résultats sur une ligne (horizontalement)

Si vous souhaitez séparer toutes les adresses mails des résultats de la cellule sur une même ligne, vous pouvez utiliser la fonction SPLIT sur Google Sheets.


=SPLIT(A1;" ")

Le premier paramètre de la fonction correspond à la cellule que vous voulez split et le second au délimiteur. C’est-à-dire quel(s) caractère(s) utiliser pour séparer le texte et donc votre résultat.

Dans cet exemple le délimiteur est un espace car entre chaque résultat de la cellule de RegEx, il y a un espace. Ainsi avec la fonction SPLIT, chaque adresse mail sera dans une cellule distincte.

Séparer les résultats sur une colonne (verticalement)

Ici, c’est le même principe que sur une ligne sauf que nous allons ajouter la fonction TRANSPOSE pour ordonner les résultats sur une ligne en une colonne. En somme, la fonction SPLIT mais verticalement.


=TRANSPOSE(SPLIT(A1;" "))

Extraire automatiquement les adresses mails via une solution tierce

Google Sheets et les fonctions RegEx sont une solution pour extraire les adresses mails d’un texte. Mais il existe aussi plusieurs solutions et sites internet qui vous permettent de faire cela.

La majorité de ces sites vont être simples à utiliser, il suffit de prendre votre texte et de le copier sur la plateforme pour que l’ensemble des adresses mails soient extraites.

Je vous donne quelques exemples de plateformes (sans ordre particulier) :

  • https://debounce.io/fr/extract-email-from-text/
  • https://fr.rakko.tools/tools/66/
  • https://captain-extractor.com/

Personnellement, je préfère utiliser la méthode avec Google Sheets car je peux personnaliser la fonction en fonction de mes besoins et en fonction du texte.

Antoine Moulard
Antoine Moulard

N'hésitez pas à me contacter si vous avez des remarques ou des questions sur cet article.