Aller au contenu principal

Qu'est-ce que la fonction REGEX.EXTRAIRE ?

Définition
La fonction REGEX.EXTRAIRE renvoie la partie d'un texte qui correspond à une expression régulière. Selon le mode choisi, elle rend la première correspondance, toutes les correspondances ou les groupes capturés, et elle renvoie #N/A quand rien ne correspond.

REGEX.EXTRAIRE (REGEXEXTRACT en anglais) te sert à récupérer dans un texte l'information qui a une forme reconnaissable, comme une référence de facture, une adresse email, un code postal ou un montant. Tu décris cette forme une seule fois avec une expression régulière, et Excel va la chercher dans chaque cellule, où qu'elle se trouve dans la phrase.

C'est la fonction qu'il te faut pour nettoyer un export bancaire, isoler l'adresse d'un contact noyée dans une ligne de texte ou rassembler toutes les références citées dans un message. Elle remplace des dizaines de formules CHERCHE, TROUVE et STXT imbriquées par une seule expression, à condition d'avoir Excel pour Microsoft 365.

Syntaxe

REGEX.EXTRAIRE est réservée à Excel pour Microsoft 365, sur Windows comme sur Mac. Dans un Excel en français, son nom anglais n'est pas reconnu et renvoie #NOM?.

Vrai ou faux ?
« REGEXEXTRACT est une fonction de Google Sheets, Excel ne l'a pas. » Faux. Excel pour Microsoft 365 a la sienne, qui s'appelle REGEX.EXTRAIRE dans un Excel en français. Elle ne se comporte pas tout à fait comme celle de Google Sheets, car un groupe entre parenthèses n'y change rien tant que tu ne passes pas le mode 2.
Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction REGEX.EXTRAIRE

Seuls les deux premiers arguments sont obligatoires, le texte à fouiller puis le motif à y chercher. C'est le motif qui décide de ce que tu récupères, et c'est là que se jouent presque toutes les surprises.

Les deux derniers règlent la forme de la réponse. Le mode choisit entre la première correspondance, toutes les correspondances ou les seuls groupes entre parenthèses, et le respect de la casse décide si urgent trouve aussi URGENT.

1

texte

: le texte dans lequel chercher

Ça peut être une référence de cellule (A2), un texte entre guillemets ("Contact marie@gmail.com") ou le résultat d'une autre fonction, comme SUPPRESPACE(A2).

Une cellule qui contient un nombre est lue comme du texte, si bien que =REGEX.EXTRAIRE(B2; "\d{2}") renvoie 12 quand B2 contient 12345. Le résultat, lui, est toujours du texte.

2

modèle

: l'expression régulière qui décrit ce que tu cherches

[0-9]{5} signifie « exactement cinq chiffres consécutifs », parfait pour un code postal français, et \d+ signifie « un ou plusieurs chiffres ».

L'antislash s'écrit une seule fois, car Excel transmet le motif tel quel au moteur des expressions régulières. Les parenthèses créent des groupes de capture, que seul le mode 2 renvoie à part.

3

[mode_renvoi]

: ce que la fonction renvoie(facultatif)

0, la valeur par défaut, donne la première correspondance. 1 donne toutes les correspondances, chacune dans sa cellule, déversées vers la droite. 2 donne les groupes entre parenthèses de la première correspondance, un par cellule, eux aussi vers la droite.

Les modes 1 et 2 ont besoin de cellules vides à droite de la formule. Si l'une d'elles est occupée, Excel renvoie #PROPAGATION!.

4

[respect_casse]

: `0`, la valeur par défaut, distingue les majuscules des minuscules, si bien que `urgent` ne trouve pas `URGENT`(facultatif)

1 les confond.

Pour régler la casse sans toucher au mode, laisse le troisième argument vide entre deux points-virgules, comme dans =REGEX.EXTRAIRE(A2; "urgent"; ; 1). Le préfixe (?i) placé en tête du motif produit le même effet.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Comment utiliser REGEX.EXTRAIRE

Exemple 1

Comment extraire une référence de facture avec la fonction REGEX.EXTRAIRE

Tu dois rapprocher des centaines de factures à partir de notes de suivi saisies à la volée, et chacune cache quelque part une référence au format FAC-ANNÉE-NUMÉRO. Tu veux récupérer cette référence seule, dans une colonne propre, pour la trier et la comparer à ton export comptable. La fonction REGEX.EXTRAIRE reconnaît la forme de la référence et te la renvoie, où qu'elle se trouve dans la phrase.

Les étapes
  1. 1
    Dans une cellule, écris =REGEX.EXTRAIRE(.
  2. 2
    En 1er argument : clique sur la cellule qui contient le texte à fouiller, A2. C'est la note de suivi entière, et la fonction ira y chercher la référence où qu'elle se trouve dans la phrase.
  3. 3
    En 2ᵉ argument : écris entre guillemets le motif à retrouver, "FAC-\d{4}-\d+". Il se lit « le texte FAC-, puis exactement quatre chiffres, un tiret, puis au moins un chiffre », et c'est lui seul qui décide de ce que tu récupères.
  4. 4
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=REGEX.EXTRAIRE(A2; "FAC-\d{4}-\d+")
Explication
La fonction parcourt la note et s'arrête sur le premier passage qui a la forme décrite, c'est-à-dire le texte FAC-, quatre chiffres, un tiret, puis des chiffres. Tout le reste de la phrase est ignoré, donc la place de la référence dans le texte n'a aucune importance.
Exemple 2

Comment ne récupérer qu'une partie du motif avec la fonction REGEX.EXTRAIRE

Tes fiches de contact arrivent sur une seule ligne, avec le nom et l'adresse séparés par un libellé toujours identique. Tu veux l'adresse seule, prête à être collée dans ton outil d'emailing, sans le Email : qui la précède. La fonction REGEX.EXTRAIRE sait viser un repère dans le texte tout en ne renvoyant que la portion qui t'intéresse.

Les étapes
  1. 1
    Dans une cellule, écris =REGEX.EXTRAIRE(.
  2. 2
    En 1er argument : clique sur la cellule qui porte la ligne de contact complète, A2. Le nom et l'adresse y tiennent sur une seule ligne, séparés par un libellé toujours identique.
  3. 3
    En 2ᵉ argument : écris le motif en entourant de parenthèses la seule partie à récupérer, "Email : (\S+)". Le libellé Email : sert de repère et reste en dehors des parenthèses, tandis que le groupe (\S+) capture l'adresse, une suite de caractères sans espace.
  4. 4
    En 3ᵉ argument : saisis le mode qui renvoie les groupes entre parenthèses, 2. Sans lui, Excel ignore les parenthèses et te rend la correspondance entière, libellé compris.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=REGEX.EXTRAIRE(A2; "Email : (\S+)"; 2)
Explication
Les parenthèses et le mode 2 travaillent ensemble. Le libellé Email : sert de repère pour trouver le bon endroit, et le mode 2 ne renvoie que ce que capture le groupe (\S+), la suite de caractères sans espace qui le suit. Sans ce 2, la cellule afficherait Email : marie.dupont@gmail.com, libellé compris.
Exemple 3

Comment gérer l'erreur #N/A avec les fonctions REGEX.EXTRAIRE et SIERREUR

En vrai, toutes tes notes ne mentionnent pas une facture, certaines parlent d'un devis ou d'un simple point d'étape. Dès qu'une ligne ne contient aucune référence, ta colonne se couvre d'erreurs #N/A qui contaminent ensuite tout ce qui la référence. Tu veux un tableau propre, où l'absence de référence se lit comme une information et non comme une panne.

Les étapes
  1. 1
    Dans une cellule, écris =SIERREUR(.
  2. 2
    En 1er argument : écris l'extraction à surveiller et referme-la, REGEX.EXTRAIRE(A2; "FAC-\d{4}-\d+"). C'est elle que SIERREUR évalue en premier, et c'est elle qui renvoie #N/A dès que la note ne mentionne aucune facture.
  3. 3
    En 2ᵉ argument : écris ce que la cellule doit afficher quand l'extraction échoue, "À compléter". Remplace-le par "" si tu préfères laisser la cellule vide.
  4. 4
    Ferme la parenthèse de la fonction SIERREUR et appuie sur Entrée. Celle de REGEX.EXTRAIRE a déjà été refermée à l'étape précédente.
Une fois les morceaux assemblés, ta formule donne ça :=SIERREUR(REGEX.EXTRAIRE(A2; "FAC-\d{4}-\d+"); "À compléter")
Explication
Sur les deux notes qui ne portent aucune référence, l'extraction ne trouve rien et renvoie l'erreur #N/A. La fonction SIERREUR intercepte cette erreur et écrit À compléter à la place, ce qui garde la colonne lisible et évite que l'erreur ne se propage dans les calculs qui s'appuient dessus.
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec REGEX.EXTRAIRE

1Astuce

Rassemble toutes les correspondances dans une seule cellule

Avec 1 en troisième argument, REGEX.EXTRAIRE renvoie toutes les correspondances au lieu de la première, chacune dans sa cellule vers la droite. Pour les réunir dans une seule cellule, enveloppe-la dans JOINDRE.TEXTE, comme dans =JOINDRE.TEXTE(", "; VRAI; REGEX.EXTRAIRE(A2; "FAC-\d{4}-\d+"; 1)). Sur une note qui cite trois factures, la cellule affiche FAC-2024-1523, FAC-2024-1524, FAC-2025-0087.
C'est la bonne parade quand tu ne sais pas combien de références chaque ligne contient.

2Astuce

Convertis le résultat en nombre avec CNUM

REGEX.EXTRAIRE renvoie toujours du texte, même quand elle extrait des chiffres, et ce texte ne se laisse pas additionner. Enveloppe-la dans CNUM pour obtenir un vrai nombre, comme dans =CNUM(REGEX.EXTRAIRE(A2; "\d+")), qui renvoie 125 sur Prix : 125 EUR.
Le réflexe vaut pour tous les montants, quantités et numéros que tu extrais d'un texte.

3Astuce

Crée une bibliothèque de motifs dans un onglet dédié

Dans un onglet séparé de ton classeur, tiens une liste de tes regex les plus utiles (emails, téléphones, codes postaux, références) avec des exemples et des notes. Tu pourras les copier-coller rapidement au lieu de les réécrire à chaque fois.
Avec le temps, cette bibliothèque devient un actif réutilisable d'un projet à l'autre.

Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction REGEX.EXTRAIRE

Avec REGEX.EXTRAIRE, la moitié des ennuis viennent du motif lui-même, un point qu'on n'a pas échappé et qui accepte n'importe quel caractère, ou un .* trop gourmand qui avale plus de texte que prévu.

L'autre moitié vient de ce que la fonction renvoie. Elle affiche #N/A dès qu'elle ne trouve rien et #VALEUR! quand le motif est mal formé, et elle rend la correspondance entière tant que tu ne lui demandes pas les groupes avec le mode 2, un piège fréquent quand on arrive de Google Sheets.

Oublier d'échapper les caractères spéciaux

Les caractères comme ., +, *, ( et ) ont une signification spéciale dans une expression régulière. Un point sans antislash veut dire « n'importe quel caractère » et non un point littéral, si bien que sur Total 12X50 puis 12.50, =REGEX.EXTRAIRE(A2; "[0-9]+.[0-9]{2}") renvoie 12X50.

Solution : Échappe le caractère avec un antislash quand tu le cherches au sens littéral. =REGEX.EXTRAIRE(A2; "[0-9]+\.[0-9]{2}") renvoie bien 12.50, et un seul antislash suffit dans Excel.

Erreur #N/A non gérée qui casse les formules en aval

Si REGEX.EXTRAIRE ne trouve aucune correspondance, elle renvoie #N/A. Toute formule qui référence cette cellule hérite de l'erreur, et le tableau devient illisible.

Solution : Enveloppe REGEX.EXTRAIRE dans SIERREUR, avec =SIERREUR(REGEX.EXTRAIRE(A2; "motif"); "") pour une cellule vide ou =SIERREUR(REGEX.EXTRAIRE(A2; "motif"); "Non trouvé") pour un message explicite.

Récupérer le libellé avec le groupe entre parenthèses

Dans Google Sheets, un motif qui contient des parenthèses renvoie le contenu du groupe. Dans Excel, le mode par défaut renvoie la correspondance entière, si bien que =REGEX.EXTRAIRE(A2; "Email : (\S+)") affiche Email : marie.dupont@gmail.com.

Solution : Ajoute 2 en troisième argument pour ne garder que le groupe. Tu peux aussi écrire le repère en regard arrière, qui n'entre pas dans la correspondance, comme dans =REGEX.EXTRAIRE(A2; "(?<=Email : )\S+").

Erreur #VALEUR! à cause d'un motif mal formé

Un crochet ou une parenthèse jamais refermé rend le motif illisible, et Excel renvoie #VALEUR!. =REGEX.EXTRAIRE(A2; "[0-9") en est l'exemple type.

Solution : Vérifie que chaque crochet et chaque parenthèse a sa fermeture. En cas de doute, simplifie le motif jusqu'à une version qui fonctionne, puis ajoute les contraintes une à une.

Erreur #NOM? à la saisie de la formule

Dans un Excel en français, le nom anglais de la fonction n'est pas reconnu et la cellule affiche #NOM?. Une version d'Excel sans Microsoft 365, qui ne connaît pas la fonction, réagit de la même façon.

Solution : Écris le nom français, REGEX.EXTRAIRE. Sans Microsoft 365, reviens à CHERCHE, TROUVE et STXT, qui savent extraire un texte dont tu connais le repère et la longueur.

Motif trop gourmand qui capture trop de texte

Les quantificateurs * et + prennent le plus de texte possible. Sur Réf. A12 (urgent) et (normal), =REGEX.EXTRAIRE(A2; "\(.*\)") renvoie (urgent) et (normal), de la première parenthèse ouvrante à la dernière fermante.

Solution : Ajoute un ? après le quantificateur pour qu'il s'arrête au plus tôt. =REGEX.EXTRAIRE(A2; "\(.*?\)") renvoie alors (urgent).

Le conseil du pro
REGEX.EXTRAIRE renvoie l'erreur #N/A dès qu'elle ne trouve aucune correspondance, et cette erreur contamine toutes les formules qui s'appuient sur la cellule. Prends le réflexe de l'envelopper dans SIERREUR, du type SIERREUR(REGEX.EXTRAIRE(A2; "motif"); ""), pour obtenir une cellule vide à la place.
Lucas, la mascotte du Dojo, compare deux fonctions Excel

REGEX.EXTRAIRE vs CHERCHE vs TROUVE vs STXT

Tu prends REGEX.EXTRAIRE quand tu cherches une forme plutôt qu'un mot fixe (un email, un numéro, une référence) et que tu veux récupérer directement la valeur, pas sa position. Sans Microsoft 365, CHERCHE et TROUVE te donnent la position d'un texte connu, et STXT découpe à partir de cette position.

Cette combinaison tient tant que l'information garde une longueur fixe. =STXT(A2; CHERCHE("FAC-"; A2); 13) renvoie la même référence FAC-2024-1523 que l'Exemple 1, mais un numéro plus long serait coupé net.

CritèreREGEX.EXTRAIRECHERCHETROUVESTXT
DisponibilitéExcel pour Microsoft 365Toutes les versionsToutes les versionsToutes les versions
Motifs complexesOui (regex)Non (jokers ? et * seulement)Non (texte exact)Non
Extraction directeOuiNon (renvoie une position)Non (renvoie une position)Oui (avec une position connue)
Plusieurs correspondancesOui (mode 1)NonNonNon
Sensible à la casseOui, sauf respect_casse à 1NonOuiSans objet
Cas d'usageExtraction flexible sur motifTrouver une position, casse ignoréeTrouver une position exacteExtraire quand la position est connue

Tu as peut-être encore une question

Oui, dans Excel pour Microsoft 365, sur Windows comme sur Mac. Dans un Excel en français, elle s'appelle REGEX.EXTRAIRE, et son nom anglais y renvoie #NOM?. L'aide de Microsoft ne la cite pour aucune version sans abonnement, Excel 2024 compris. Sur ces versions, il faut revenir à CHERCHE, TROUVE et STXT.

Pour aller plus loin

Tout ce dont tu as besoin pour maîtriser la fonction REGEX.EXTRAIRE se trouve ici.

Besoin d’aide sur Excel ?

Rejoins le Dojo pour poser tes questions, obtenir de l’aide sur tes fichiers Excel et participer chaque mois à un cours collectif en direct.

Gratuit · Sans carte bancaire