Aller au contenu principal

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

Définition
La fonction REGEX.REMPLACER remplace dans un texte les portions qui correspondent à une expression régulière. Par défaut, elle remplace toutes les correspondances, et son quatrième argument permet de n'en viser qu'une.

REGEX.REMPLACER (REGEXREPLACE en anglais) prend le relais dès que SUBSTITUE ne suit plus, quand ce que tu veux corriger n'est pas un texte fixe mais une forme qui varie d'une ligne à l'autre, comme une suite de chiffres, un séparateur qui change ou une casse imprévisible. Tu décris le motif une seule fois et Excel l'applique à toutes les variantes d'un coup.

Concrètement, c'est elle qui normalise des numéros de téléphone saisis dans des formats différents, anonymise des adresses email pour un export RGPD, reformate des références produits avant un import ou réorganise des dates d'un format vers un autre. Elle est réservée à Excel pour Microsoft 365 et remplace des heures de copier-coller à la main.

Syntaxe

REGEX.REMPLACER 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 ?
« Excel n'a pas de fonction pour remplacer avec une regex, il faut Google Sheets. » Faux. Excel pour Microsoft 365 a REGEX.REMPLACER, et elle peut même ne remplacer qu'une occurrence précise grâce à son quatrième argument, là où la version de Google Sheets se limite à trois arguments.
Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction REGEX.REMPLACER

Les trois premiers arguments s'enchaînent dans un ordre logique, le texte où chercher, le motif qui décrit ce que tu traques, puis ce par quoi tu remplaces chaque correspondance. Le remplacement accepte une chaîne vide "" quand ton but est simplement de supprimer ce que le motif attrape.

Les deux derniers sont facultatifs. L'occurrence choisit laquelle des correspondances remplacer, et le respect de la casse décide si bonjour attrape aussi BONJOUR.

1

texte

: le texte dans lequel effectuer le remplacement

Tu peux passer une référence de cellule (A1), un texte entre guillemets ("Réf 2024 lot 7") ou le résultat d'une autre formule.

Si le texte ne contient aucune correspondance, la fonction le renvoie tel quel, sans erreur. Le résultat est toujours du texte, même quand il ne reste que des chiffres.

2

modèle

: l'expression régulière à rechercher

Les expressions régulières décrivent des structures, comme une suite de chiffres, un format d'email, des espaces multiples ou un début de texte.

Parmi les motifs courants, [0-9]+ désigne un ou plusieurs chiffres, \s+ une suite d'espaces, [^a-zA-Z0-9] tout caractère qui n'est ni une lettre ni un chiffre, et ^[^@]+ tout ce qui précède le @. L'antislash s'écrit une seule fois dans Excel.

3

remplacement

: le texte qui remplace chaque correspondance trouvée

Tu peux y rappeler les groupes capturés entre parenthèses dans le motif avec $1, $2, $3, ce qui permet de réorganiser et de reformater des données.

Utilise "" (chaîne vide) pour supprimer ce que le motif attrape sans rien mettre à la place. Par exemple, =REGEX.REMPLACER(A1; "[0-9]"; "") supprime tous les chiffres du texte.

4

[occurrence]

: le rang de la correspondance à remplacer(facultatif)

0, la valeur par défaut, les remplace toutes. 1 ne remplace que la première, 2 la deuxième, et un nombre négatif compte depuis la fin, si bien que -1 vise la dernière.

Sur 06-12-34-56-78, =REGEX.REMPLACER(A2; "-"; " "; 1) renvoie 06 12-34-56-78, et le même appel avec -1 renvoie 06-12-34-56 78.

5

[respect_casse]

: `0`, la valeur par défaut, distingue les majuscules des minuscules(facultatif)

1 les confond, si bien que bonjour remplace aussi Bonjour et BONJOUR.

Pour régler la casse sans choisir d'occurrence, laisse le quatrième argument vide entre deux points-virgules, comme dans =REGEX.REMPLACER(A1; "bonjour"; "Salut"; ; 1). Le préfixe (?i) placé en tête du motif produit le même effet.

Le savais-tu ?
Les parenthèses de ton motif deviennent des groupes que tu rappelles dans le remplacement avec $1, $2 et $3. C'est ce qui te laisse réorganiser un texte à la volée, et REGEX.REMPLACER(A2; "(\d{2})/(\d{2})/(\d{4})"; "$3-$2-$1") transforme ainsi le texte 15/12/2024 en 2024-12-15.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Comment utiliser REGEX.REMPLACER

Exemple 1

Comment supprimer tous les caractères parasites avec la fonction REGEX.REMPLACER

Les numéros de téléphone arrivent de ton formulaire dans tous les formats imaginables, avec des espaces, des tirets, des points, parfois des parenthèses. L'outil qui doit les appeler, lui, n'accepte qu'une suite de chiffres collés. Tu veux normaliser la colonne entière d'un coup plutôt que de reprendre chaque ligne à la main, et la fonction REGEX.REMPLACER efface tout ce qui n'est pas un chiffre, quel que soit le format d'origine.

Les étapes
  1. 1
    Dans une cellule, écris =REGEX.REMPLACER(.
  2. 2
    En 1er argument : clique sur la cellule qui contient le texte à nettoyer, A2. C'est le numéro tel qu'il a été saisi, avec ses espaces, ses tirets et ses parenthèses.
  3. 3
    En 2ᵉ argument : écris entre guillemets ce que tu veux attraper, "[^0-9]". Les crochets définissent un ensemble de caractères et le ^ placé en tête le retourne, si bien que tu vises tout caractère qui n'est pas un chiffre.
  4. 4
    En 3ᵉ argument : écris une chaîne vide, "", qui remplace chaque caractère attrapé par rien. Remplacer par rien revient à supprimer.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=REGEX.REMPLACER(A2; "[^0-9]"; "")
Explication
Le ^ placé juste après le crochet ouvrant inverse la sélection, si bien que [^0-9] ne désigne pas les chiffres mais tout ce qui n'en est pas un. Comme le remplacement est une chaîne vide, chaque espace, tiret, point et parenthèse disparaît en une seule passe, et les quatre formats de départ retombent sur le même numéro. Le résultat reste du texte, ce qui garde le zéro de tête.
Exemple 2

Comment réorganiser une date avec les groupes de capture de la fonction REGEX.REMPLACER

Tes dates de campagne sont écrites à la française, en jour/mois/année, alors que l'outil d'analyse qui va les recevoir exige l'ordre international année-mois-jour. Tu veux convertir la colonne entière sans la ressaisir. La fonction REGEX.REMPLACER sait découper la date en trois morceaux et les recoller dans l'ordre qui t'arrange.

Les étapes
  1. 1
    Dans une cellule, écris =REGEX.REMPLACER(.
  2. 2
    En 1er argument : clique sur la cellule qui porte la date à convertir, A2. Elle est écrite à la française, dans l'ordre jour, mois, année.
  3. 3
    En 2ᵉ argument : écris entre guillemets un motif qui isole les trois morceaux entre parenthèses, "(\d{2})/(\d{2})/(\d{4})". Il capture deux chiffres pour le jour, deux pour le mois et quatre pour l'année, les / servant de repères sans être capturés.
  4. 4
    En 3ᵉ argument : écris entre guillemets la forme de sortie, "$3-$2-$1". Les rappels $3, $2 et $1 remettent l'année, le mois puis le jour, séparés par des tirets.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=REGEX.REMPLACER(A2; "(\d{2})/(\d{2})/(\d{4})"; "$3-$2-$1")
Explication
Chaque paire de parenthèses met un morceau de côté, le jour, puis le mois, puis l'année. Dans le remplacement, $1, $2 et $3 rappellent ces morceaux dans l'ordre que tu choisis, la numérotation suivant les parenthèses ouvrantes de gauche à droite. Passer à un autre format ne demande donc que de déplacer les $.

Attention : Ce cas ne fonctionne que si la colonne A contient bien du texte. Si tu tapes 15/12/2024 dans un Excel réglé en français, Excel en fait une vraie date, rangée sous son numéro de série 45641. La fonction REGEX.REMPLACER travaille alors sur ce nombre, ne trouve aucune barre oblique et te renvoie 45641. Formate la colonne en Texte avant la saisie, ou fais précéder la date d'une apostrophe, comme '15/12/2024.

Exemple 3

Comment rendre un montant calculable avec les fonctions REGEX.REMPLACER et CNUM

Ton relevé arrive en une seule colonne où les montants sont noyés dans du texte libre, et tu ne peux rien en faire tant qu'ils restent des phrases. Tu veux une colonne de vrais nombres, sur laquelle une somme ou une moyenne fonctionne du premier coup. La fonction REGEX.REMPLACER fait le tri des caractères, mais elle rend toujours du texte, alors c'est la fonction CNUM qui termine le travail.

Les étapes
  1. 1
    Dans une cellule, écris =CNUM(.
  2. 2
    En 1er argument : écris le nettoyage à convertir et referme-le, REGEX.REMPLACER(A2; "[^0-9,]"; ""). Ce motif vise tout ce qui n'est ni un chiffre ni la virgule décimale et le remplace par rien, mais le résultat reste du texte, et c'est la fonction CNUM qui le transforme en nombre calculable.
  3. 3
    Ferme la parenthèse de la fonction CNUM et appuie sur Entrée. Celle de REGEX.REMPLACER a déjà été refermée à l'étape précédente.
Une fois les morceaux assemblés, ta formule donne ça :=CNUM(REGEX.REMPLACER(A2; "[^0-9,]"; ""))
Explication
Le ménage se fait d'abord. [^0-9,] vise tout ce qui n'est ni un chiffre ni une virgule, et le remplacement par une chaîne vide efface le libellé comme l'unité. Ce qui en reste est encore du texte, d'où la fonction CNUM par-dessus, qui le convertit en nombre. C'est pour ça que 3 450,00 s'affiche désormais 3450 et se laisse enfin additionner.

Attention : Ce motif ramasse tous les chiffres de la ligne, sans distinction. Si un libellé contient déjà un numéro, comme Virement FAC-2024-001 montant 1 250,50 EUR, ses chiffres se collent au montant. Le nettoyage produit 20240011250,50, et la fonction CNUM en fait un nombre qui n'a plus aucun sens. Regarde tes vraies lignes avant de recopier la formule sur toute la colonne.

Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec REGEX.REMPLACER

1Astuce

Nettoie les espaces multiples et les espaces de début et de fin

Deux motifs couvrent les cas les plus fréquents. =REGEX.REMPLACER(A1; "\s+"; " ") remplace toute suite d'espaces, tabulations et sauts de ligne compris, par un seul espace. =REGEX.REMPLACER(A1; "^\s+|\s+$"; "") supprime les espaces en début et en fin de texte, comme SUPPRESPACE, mais en retirant aussi les tabulations que SUPPRESPACE laisse en place.
Tu peux imbriquer les deux pour tout nettoyer en une seule formule.

2Astuce

Anonymise une adresse email en gardant son domaine

Le motif ^[^@]+ attrape tout ce qui précède l'arobase, et seulement ça. =REGEX.REMPLACER(A1; "^[^@]+"; "***") transforme jean.dupont@gmail.com en ***@gmail.com.
Tu gardes ainsi le domaine, utile pour compter les adresses par fournisseur, sans exposer la personne dans un export partagé.

3Astuce

Remplace plusieurs séparateurs différents en un seul appel

Les crochets [] définissent un ensemble de caractères. =REGEX.REMPLACER(A1; "[.,;]"; "-") remplace les points, les virgules et les points-virgules par des tirets en une seule formule, sans avoir à imbriquer trois SUBSTITUE. L'ensemble peut contenir autant de caractères que tu veux.
Ce motif évite d'écrire =SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;".";"-");",";"-");";";"-"), qui devient illisible dès le troisième niveau.

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

Les erreurs fréquentes avec la fonction REGEX.REMPLACER

Avec REGEX.REMPLACER, presque tous les ratés se jouent dans le motif, pas dans les données. Un crochet ou une parenthèse jamais refermé fait renvoyer #VALEUR!, et un point oublié sans antislash remplace n'importe quel caractère.

Les deux autres pièges classiques sont un motif en minuscules qui ne colle pas à des données en majuscules, et un $1 qui rappelle un groupe absent du motif, ce qui renvoie lui aussi #VALEUR!.

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

L'expression régulière contient une erreur de syntaxe, par exemple une parenthèse ou un crochet jamais refermé. Excel ne peut pas l'appliquer et renvoie #VALEUR!, comme =REGEX.REMPLACER(A1; "(abc"; "x").

Solution : Vérifie que chaque parenthèse et chaque crochet a sa fermeture, et échappe les caractères spéciaux avec un antislash. Pour un point littéral, écris \., et =REGEX.REMPLACER("v1.2.3"; "\."; "-") renvoie v1-2-3, alors que "." remplace chaque caractère et renvoie ------.

Le texte ne change pas malgré une correspondance attendue

Le motif ne trouve aucune correspondance, le plus souvent à cause de la casse (le motif est en minuscules et les données en majuscules) ou d'un motif trop précis qui ne colle pas aux données réelles. La fonction renvoie alors le texte tel quel, sans erreur.

Solution : Passe 1 en cinquième argument, ou ajoute (?i) au début du motif, pour ignorer la casse. Si rien ne bouge encore, reprends le motif morceau par morceau sur une de tes vraies valeurs, pour voir où il décroche.

Doubler l'antislash comme dans un langage de programmation

Dans beaucoup de langages, l'antislash se double à l'intérieur d'une chaîne, et les motifs recopiés depuis du code s'écrivent \\d au lieu de \d. Excel, lui, transmet le motif tel quel, si bien que \\d cherche un antislash suivi de la lettre d, et plus aucun chiffre.

Solution : Écris un seul antislash dans Excel, \d pour un chiffre, \s pour un espace, \. pour un point. =REGEX.REMPLACER("Réf 2024"; "\d"; "#") renvoie Réf ####.

Rappeler un groupe que le motif ne capture pas

Tu utilises $1, $2 dans le remplacement, mais les parenthèses de capture manquent dans le motif, ou elles sont non capturantes, sous la forme (?:...). Excel refuse alors de rappeler un groupe qui n'existe pas, si bien que =REGEX.REMPLACER("Jean Dupont"; "\w+ \w+"; "$2, $1") renvoie #VALEUR!.

Solution : Entoure de parenthèses simples chaque partie à rappeler. =REGEX.REMPLACER("Jean Dupont"; "(\w+) (\w+)"; "$2, $1") fonctionne, car les deux groupes sont entre parenthèses, et renvoie Dupont, Jean.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

REGEX.REMPLACER vs SUBSTITUE vs Rechercher/Remplacer

Tant que tu remplaces une chaîne exacte que tu connais à l'avance, SUBSTITUE suffit et marche dans toutes les versions d'Excel. Dès que tu dois décrire une forme plutôt qu'un texte précis (une suite de chiffres, tout ce qui précède le @) ou réorganiser des morceaux avec $1, $2, seule REGEX.REMPLACER le fait, à condition d'avoir Microsoft 365.

La fenêtre Rechercher et remplacer n'entre en jeu que pour une correction ponctuelle à la main. Aucune formule n'est conservée, donc rien n'est rejouable sur tes prochaines lignes, et elle ne connaît que les jokers * et ?, pas les expressions régulières.

CritèreREGEX.REMPLACERSUBSTITUERechercher/Remplacer
Motifs complexes✅ Oui (regex)❌ Texte exact uniquement⚠️ Jokers * et ? seulement
Groupes de capture✅ Oui ($1, $2...)❌ Non❌ Non
Une seule occurrence✅ Oui (4ᵉ argument)✅ Oui (4ᵉ argument)❌ Non
Formule réutilisable✅ Oui✅ Oui❌ Manuel (non reproductible)
DisponibilitéExcel pour Microsoft 365Toutes les versionsToutes les versions
Facilité d'utilisation⭐⭐ Intermédiaire (regex à apprendre)⭐⭐⭐ Simple⭐⭐⭐ Simple
Cas d'usage idéalNettoyage complexe, reformatage, motifsRemplacement de texte exactCorrection ponctuelle non automatisée

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.REMPLACER, et son nom anglais y renvoie #NOM?. Elle va même plus loin que sa cousine de Google Sheets, avec deux arguments facultatifs pour choisir la correspondance à remplacer et pour ignorer la casse.

Pour aller plus loin

Tout ce dont tu as besoin pour maîtriser la fonction REGEX.REMPLACER 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