En bref — Les deux fonctions remplacent du texte, mais elles répondent à des questions différentes.
SUBSTITUTE(text, old, new, [instance])(français : SUBSTITUE) travaille par contenu — « remplace chaque","par rien », ou avec le 4e argument, « remplace seulement la 2e ».REPLACE(text, start, length, new)(français : REMPLACER) travaille par position — « écrase 5 caractères à partir de la position 9 », quoi qu'il y ait. Choisissez la mauvaise et vous modifiez silencieusement la mauvaise chose.SUBSTITUTEest sensible à la casse ;REPLACEne regarde pas du tout le contenu. Les deux renvoient du texte et fonctionnent dans toutes les versions d'Excel.
=SUBSTITUTE("1,234,567", ",", "") ' -> "1234567" (chaque virgule, par contenu)
=SUBSTITUTE("a-b-c", "-", ":", 2) ' -> "a-b:c" (seulement le 2e trait d'union)
=REPLACE("2026-XX-01", 6, 2, "04") ' -> "2026-04-01" (par position)
Ce sont les deux formules de « rechercher et remplacer », et toute la compétence consiste à savoir dans quel modèle mental vous vous trouvez. Réglez cela correctement et elles deviennent triviales ; trompez-vous et vous passerez un après-midi à vous demander pourquoi les mauvais caractères ont changé.
Ce que vous allez apprendre
- La distinction fondamentale :
SUBSTITUTEcorrespond au contenu,REPLACEcorrespond à la position - Comment le 4e argument de
SUBSTITUTEcible uniquement la Nème occurrence - Pourquoi
SUBSTITUTEest sensible à la casse, et comment cela vous piège - La fameuse astuce
LEN-moins-LENpour compter les occurrences - Quand associer
REPLACEàFIND— et quand s'arrêter et utiliserTEXTSPLIT
Le modèle mental : un remplacement de mot vs un tampon
SUBSTITUTE est un rechercher-remplacer par sens, comme appuyer sur Ctrl+H :
« trouve ce texte, mets cet autre texte à sa place, partout où il apparaît ». Il
ne se soucie pas de l'endroit où sont les correspondances, seulement de ce
qu'elles sont.
REPLACE est un tampon à une coordonnée : « à partir du caractère 9, efface
les 5 suivants et écris ceci à la place ». Il ne se soucie pas de ce qui s'y
trouvait — il ne connaît que la position. Si la chose que vous voulez changer se
situe à un endroit prévisible, utilisez REPLACE. Si c'est une chaîne
prévisible qui pourrait se trouver n'importe où, utilisez SUBSTITUTE.
' Format fixe -> la position est fiable -> REPLACE
=REPLACE("ID-000123", 1, 3, "REF-") ' "REF-000123"
' Texte connu, emplacement inconnu -> contenu -> SUBSTITUTE
=SUBSTITUTE("Qty: 5 units", "units", "pcs") ' "Qty: 5 pcs"
Cette seule distinction résout presque toutes les questions « lequel dois-je utiliser ? ».
La règle qui débloque tout : le 4e argument de SUBSTITUTE
Par défaut, SUBSTITUTE remplace chaque occurrence — ce que vous voulez pour
retirer toutes les virgules ou tous les espaces d'une valeur. Mais son 4e argument
facultatif, instance_num, vous permet d'en cibler exactement une :
=SUBSTITUTE("a-b-c-d", "-", " ") ' "a b c d" — toutes
=SUBSTITUTE("a-b-c-d", "-", " ", 3) ' "a-b-c d" — seulement le 3e trait d'union
C'est la fonctionnalité qui fait jouer SUBSTITUTE au-dessus de sa catégorie :
« change le dernier séparateur en espace », « corrige seulement la deuxième barre
oblique ». C'est chirurgical d'une manière dont REPLACE est incapable, car
REPLACE exigerait que vous calculiez d'abord la position.
SUBSTITUTE est sensible à la casse (REPLACE s'en moque)
Un piège discret : SUBSTITUTE fait correspondre la casse à l'identique.
SUBSTITUTE("Apple apple", "apple", "orange") ne change que celui en minuscules,
renvoyant "Apple orange". C'est cohérent avec
FIND (également sensible à la casse) mais à
l'opposé du comportement de la comparaison = de la feuille et de SEARCH, ce
qui prend les gens au dépourvu. Si vous avez besoin d'un remplacement insensible à
la casse, il n'y a pas de paramètre — vous normalisez d'abord (par ex.
SUBSTITUTE(UPPER(A2), "APPLE", ...)) ou vous acceptez de devoir respecter la
casse exacte.
REPLACE contourne entièrement le problème : il ne regarde jamais le contenu, donc
la casse est sans importance.
L'astuce qui vaut le coup : compter les occurrences avec LEN
Voici l'idiome SUBSTITUTE le plus apprécié, et il n'a rien à voir avec le
remplacement. Pour compter combien de fois un caractère apparaît, mesurez de
combien la chaîne raccourcit quand vous le retirez :
' Combien de virgules dans A2 ?
=LEN(A2) - LEN(SUBSTITUTE(A2, ",", ""))
' Combien de mots ? (espaces + 1, pour une chaîne à espace simple)
=LEN(TRIM(A2)) - LEN(SUBSTITUTE(TRIM(A2), " ", "")) + 1
Retirez chaque virgule, observez combien de caractères ont disparu — c'est votre compte. C'est le genre d'astuce latérale que, une fois découverte, vous réutilisez pour toujours.
Quand REPLACE a besoin de FIND, et quand s'arrêter
REPLACE ne connaît que les positions, donc dès que la position dépend du contenu,
vous la calculez avec FIND (français : TROUVE) :
' Masquer tout ce qui précède le @ dans un e-mail, de longueur inconnue
=REPLACE(A2, 1, FIND("@", A2) - 1, "*****")
C'est le mariage légitime de la position et du contenu. Mais si vous recourez à
SUBSTITUTE pour restructurer une chaîne — découper « Prénom,Nom,Service » en
colonnes, disons — vous avez dépassé son cadre. Enchaîner des SUBSTITUTE pour
simuler un découpage est un anti-modèle classique ;
TEXTSPLIT (français : FRACTIONNER.TEXTE,
Excel 365) le fait en une seule formule qui reste dynamique. Et notez qu'il s'agit
ici de REPLACE/SUBSTITUTE de la feuille de calcul, et non du
Replace de VBA, qui est insensible à la casse par défaut
et possède un argument de position qui tronque — des règles différentes, le même
nom.
Le bon réflexe
Posez-vous une seule question : est-ce que je change un texte précis ou une
position précise ? Texte précis, n'importe où → SUBSTITUTE (ajoutez le 4e
argument pour le limiter à une occurrence). Position précise → REPLACE (calculez
la position avec FIND si elle n'est pas littéralement fixe). Vous recourez au
comptage LEN-moins-LEN ? C'est SUBSTITUTE qui gagne sa place. Vous empilez
trois SUBSTITUTE pour remodeler un enregistrement ? C'est votre signal pour
découper correctement la chaîne à la place.
Comment ExcelMaster vous aide
« Retire les symboles de devise et les séparateurs de milliers, mais garde la
décimale », ou « masque le numéro de compte sauf les quatre derniers chiffres » —
ce sont des tâches SUBSTITUTE/REPLACE où le piège consiste à faire correspondre
le contenu alors que vous vouliez la position (ou l'inverse). ExcelMaster lit
l'intention en français courant et écrit la bonne — le instance_num quand vous
voulez dire « juste la deuxième », la position pilotée par FIND quand vous voulez
dire « après le @ » — pour que vous ne changiez pas les mauvais caractères. Vous
décrivez le remplacement ; il choisit le modèle.
Foire aux questions
Quelle est la différence entre SUBSTITUTE et REPLACE ?
SUBSTITUTE remplace le texte par contenu — trouve une chaîne, échange-la
partout où elle apparaît (ou seulement la Nème fois). REPLACE remplace par
position — écrase un nombre fixe de caractères à partir d'un point donné,
quel que soit le contenu. Utilisez SUBSTITUTE pour un texte connu, REPLACE pour des
positions connues.
Comment remplacer uniquement la deuxième occurrence d'un caractère ?
Utilisez le 4e argument de SUBSTITUTE : =SUBSTITUTE(A2, "-", " ", 2) change
seulement le deuxième trait d'union. REPLACE ne peut pas cibler par occurrence —
il ne travaille que par position.
SUBSTITUTE est-il sensible à la casse ?
Oui. SUBSTITUTE(A2, "apple", "orange") ne touchera pas à « Apple ». Pour
remplacer quelle que soit la casse, normalisez d'abord le texte avec UPPER
(français : MAJUSCULE) ou LOWER (français : MINUSCULE), puisqu'il n'existe pas de
paramètre d'insensibilité à la casse.
Comment compter le nombre de fois qu'un caractère apparaît dans une cellule ?
Soustrayez la longueur après substitution de la longueur d'origine :
=LEN(A2) - LEN(SUBSTITUTE(A2, ",", "")) compte les virgules. Retirer le caractère
et mesurer la différence donne le compte.
Comment remplacer du texte à une position que je ne connais pas à l'avance ?
Calculez la position avec FIND et fournissez-la à REPLACE :
=REPLACE(A2, 1, FIND("@", A2) - 1, "*****") masque tout ce qui précède le @. Cela
combine le modèle de position de REPLACE avec la recherche par contenu de FIND.
Testé dans
Testé dans : Excel 365 (Windows 11) — dernière vérification le 2026-06-29.
Guides associés : Excel FIND et SEARCH · Excel LEFT, RIGHT et MID · Excel TEXTSPLIT · VBA Replace
