SUBSTITUE (SUBSTITUTE en anglais) est une fonction texte ultra-puissante qui remplace automatiquement toutes les occurrences d'un texte par un autre. Si tu dois nettoyer des données importées, corriger des formats ou standardiser des informations, cette fonction va te faire gagner des heures de travail manuel.
Concrètement, c'est elle qui nettoie 500 numéros de téléphone en un seul coup, corrige les fautes d'orthographe dans toute une colonne, uniformise les noms de départements écrits de dix façons différentes, ou modifie chirurgicalement seulement la deuxième occurrence d'un mot dans un texte structuré.
Syntaxe de la fonction SUBSTITUE
=SUBSTITUE(texte; ancien_texte; nouveau_texte; [no_occurrence])Comprendre chaque paramètre de la fonction SUBSTITUE
« Je remplace partout ou juste à un endroit précis ? » C'est tout l'enjeu du quatrième argument. Les trois premiers se lisent dans l'ordre texte, ancien_texte, nouveau_texte et sont obligatoires : sans eux, SUBSTITUE n'a rien à chercher ni rien à poser à la place. Le [no_occurrence] est le seul facultatif : laisse-le vide et Excel remplace chaque occurrence, écris 2 et il ne touche que la deuxième.
texte
: le texte dans lequel tu veux effectuer le remplacementÇa peut être une référence à une cellule comme A1, une formule qui renvoie du texte comme CONCATENER(A1;B1), ou même un texte direct entre guillemets comme "Bonjour Paris".
ancien_texte
: le texte que tu veux remplacerSUBSTITUE est sensible à la casse : "Paris" ne trouvera pas "paris" ou "PARIS". Si ancien_texte n'existe pas dans le texte source, SUBSTITUE renvoie simplement le texte original sans modification, sans erreur.
nouveau_texte
: le texte qui va remplacer l'ancienSi tu veux supprimer du texte au lieu de le remplacer, utilise une chaîne vide "". C'est très pratique pour nettoyer des caractères indésirables comme les espaces, tirets ou symboles spéciaux.
[no_occurrence]
: spécifie quelle occurrence remplacer : `1` remplace seulement la première occurrence, `2` seulement la deuxième, etc(facultatif)Si tu omets ce paramètre, SUBSTITUE remplace toutes les occurrences trouvées. Parfait quand tu veux modifier seulement une partie spécifique d'un texte répétitif.
Si la valeur que tu indiques dépasse le nombre réel d'occurrences dans le texte, SUBSTITUE renvoie le texte original sans modification (pas d'erreur).
Astuce : Tu peux imbriquer plusieurs SUBSTITUE pour faire plusieurs remplacements d'un coup : =SUBSTITUE(SUBSTITUE(A1;".";"")",";".") remplace d'abord tous les points puis toutes les virgules.
Pas envie d'écrire la formule SUBSTITUE à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Gestionnaire de données : nettoyer des numéros de téléphone importés
Tu es gestionnaire de données et tu viens d'importer 500 contacts depuis un ancien système. Tous les numéros de téléphone contiennent des espaces, points et tirets qu'il faut supprimer pour pouvoir les réutiliser dans ton CRM.
En imbriquant trois SUBSTITUE, tu nettoies tous les formats en une seule formule : le SUBSTITUE intérieur supprime les espaces, le suivant les points, et le dernier les tirets. Le résultat : des numéros propres et homogènes, prêts à être importés dans n'importe quel système.
| A | B | |
|---|---|---|
| 1 | Téléphone brut | Téléphone nettoyé |
| 2 | 01 23 45 67 89 | 0123456789 |
| 3 | 02.34.56.78.90 | 0234567890 |
| 4 | 03-45-67-89-01 | 0345678901 |
=SUBSTITUE(SUBSTITUE(SUBSTITUE(A2;" ";"");".";"");"-";"")La formule appliquée à la ligne « 01 23 45 67 89 » supprime d'abord les espaces, puis les points, puis les tirets. Le résultat est « 0123456789 », prêt à être importé dans le CRM.
Commercial : corriger des noms de produits mal orthographiés
Tu es commercial et tu as reçu une liste de commandes où le nom d'un produit a été mal saisi à plusieurs reprises. Au lieu de « Licence Pro », certains ont écrit « Licance Pro ». Tu dois tout corriger rapidement.
Peu importe où se trouve « Licance » dans le texte, SUBSTITUE le remplace par « Licence ». En une formule, tu corriges toute ta liste sans risque d'oubli.
| A | B | |
|---|---|---|
| 1 | Produit commandé | Produit corrigé |
| 2 | Licance Pro | Licence Pro |
| 3 | Licance Pro - Pack 10 | Licence Pro - Pack 10 |
| 4 | Formation + Licance Pro | Formation + Licence Pro |
=SUBSTITUE(A2;"Licance";"Licence")La formule corrige la première ligne de données : « Licance Pro » devient « Licence Pro ». SUBSTITUE trouve et remplace toutes les occurrences de la faute, quel que soit l'endroit dans le texte.
RH : standardiser les noms de départements
Tu travailles aux ressources humaines et tu dois standardiser les noms de départements dans ton fichier employés. Certains collègues ont écrit « RH », d'autres « Ressources Humaines », d'autres « R.H. ». Tu veux tout uniformiser.
Deux SUBSTITUE imbriqués gèrent les différentes variantes du nom. Attention à l'ordre : traite « R.H. » avant « RH », sinon le premier SUBSTITUE créerait « Ressources Humaines.Humaines. ». L'ordre des imbrications est crucial.
| A | B | |
|---|---|---|
| 1 | Département original | Département standardisé |
| 2 | R.H. | Ressources Humaines |
| 3 | RH | Ressources Humaines |
| 4 | Service RH | Service Ressources Humaines |
=SUBSTITUE(SUBSTITUE(A2;"R.H.";"Ressources Humaines");"RH";"Ressources Humaines")La formule transforme « R.H. » en « Ressources Humaines ». Le traitement de « R.H. » en premier est essentiel : si « RH » était traité avant, « R.H. » deviendrait « Ressources Humaines.Humaines. ».
Attention : Quand tu imbriques plusieurs SUBSTITUE, réfléchis à l'ordre. Remplace toujours les textes les plus spécifiques en premier pour éviter les remplacements en cascade.
Développeur : remplacer seulement la deuxième occurrence
Tu es développeur et tu analyses des logs d'erreur. Chaque ligne contient plusieurs fois le mot « ERROR », mais tu veux remplacer seulement le deuxième par « WARNING » pour un traitement spécifique.
Le quatrième paramètre 2 indique de remplacer seulement la 2e occurrence du mot ERROR. C'est un contrôle chirurgical sur tes remplacements, parfait pour des modifications ciblées dans des textes structurés.
| A | B | |
|---|---|---|
| 1 | Log original | Log modifié |
| 2 | ERROR: Init | ERROR: Config | ERROR: Runtime | ERROR: Init | WARNING: Config | ERROR: Runtime |
=SUBSTITUE(A2;"ERROR";"WARNING";2)La formule cible uniquement la 2e occurrence du mot « ERROR » dans la ligne de log et la remplace par « WARNING ». La 1re et la 3e occurrence restent intactes.
Astuce de pro : Combine SUBSTITUE avec CHERCHE pour créer des remplacements conditionnels avancés basés sur le contexte du texte.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction SUBSTITUE
« Pourquoi ma formule ressort exactement le même texte ? » Avec SUBSTITUE, le raté est souvent silencieux : aucun code d'erreur, juste ta chaîne d'origine recrachée intacte, parce qu'un ancien_texte mal casé ("paris" ne trouvera jamais "Paris") ou un no_occurrence qui vise une occurrence inexistante. Les deux autres pièges, eux, se voient : des remplacements en cascade quand tu imbriques mal l'ordre, et un fichier qui rame dès que tu empiles les SUBSTITUE sur des milliers de lignes.
Rien ne se passe : la casse ne correspond pas
SUBSTITUE est sensible à la casse. Si tu cherches "paris" mais que le texte contient "Paris", aucun remplacement n'est effectué. Le résultat sera identique au texte original, sans erreur.
Solution : Utilise MINUSCULE() ou MAJUSCULE() autour de ton texte source et de ton texte à chercher : =SUBSTITUE(MINUSCULE(A1);"paris";"lyon"). Attention, le résultat sera entièrement en minuscules.
La formule retourne le texte original sans modification
Si tu spécifies un no_occurrence plus grand que le nombre réel d'occurrences (par exemple la 5ème occurrence alors qu'il n'y en a que 3), SUBSTITUE ne génère pas d'erreur : elle renvoie simplement le texte original sans modification.
Solution : Compte d'abord les occurrences avec =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;"texte";"")))/NBCAR("texte") pour vérifier combien il y en a avant d'indiquer un numéro d'occurrence.
Remplacements en cascade non désirés
Quand tu imbriques plusieurs SUBSTITUE, l'ordre compte énormément. Si tu remplaces d'abord "A" par "AB" puis "AB" par "ABC", tous les "A" deviendront "ABC", pas seulement les "AB" originaux.
Solution : Planifie l'ordre de tes SUBSTITUE. Remplace toujours les chaînes les plus longues ou les plus spécifiques en premier pour éviter les conflits.
Performance lente sur de gros volumes de données
Si tu appliques SUBSTITUE avec plusieurs imbrications sur des milliers de lignes, Excel peut ralentir considérablement, surtout si les formules sont liées à d'autres calculs complexes.
Solution : Une fois le nettoyage terminé, copie les résultats et colle-les en tant que valeurs (Ctrl+Alt+V puis V) pour supprimer les formules et améliorer les performances.
SUBSTITUE vs REMPLACER vs STXT vs EPURAGE
« Je connais le mot à changer, ou je connais sa position ? » C'est la question qui tranche entre SUBSTITUE et REMPLACER. Tu prends SUBSTITUE quand tu sais quel texte chercher mais pas où il se cache (corriger « Licance » partout, virer tous les espaces) ; tu prends REMPLACER quand tu connais les positions exactes, genre les caractères 3 à 7. Les deux autres ne jouent pas dans la même cour : STXT extrait un morceau sans rien remplacer, et EPURAGE se contente de balayer les caractères non imprimables.
| Critère | SUBSTITUE | REMPLACER | STXT | EPURAGE |
|---|---|---|---|---|
| Cherche du texte | ✅ Oui, partout | ❌ Position fixe | ❌ Extraction seulement | ❌ Non |
| Sensible à la casse | ✅ Oui | ➖ N/A | ➖ N/A | ➖ N/A |
| Remplace toutes les occurrences | ✅ Oui (ou juste une) | ❌ Une seule zone | ❌ Pas de remplacement | ✅ Tous les caractères spéciaux |
| Besoin de connaître la position | ❌ Non | ✅ Oui, obligatoire | ✅ Oui, obligatoire | ❌ Non |
| Cas d'usage principal | Nettoyage, corrections | Format fixe | Extraction de sous-chaîne | Supprimer les caractères non imprimables |
Astuces avancées avec SUBSTITUE
Supprime un caractère en remplaçant par du vide
Pour supprimer des caractères plutôt que les remplacer, utilise une chaîne vide "" comme nouveau_texte : =SUBSTITUE(A1;" ";"") supprime tous les espaces d'un coup. La même logique s'applique à n'importe quel caractère : tirets, parenthèses, symboles monétaires.
C'est la technique la plus rapide pour nettoyer des données importées sans passer par la colonne entière.
Compte les occurrences d'un caractère dans une cellule
Combine SUBSTITUE avec NBCAR pour compter combien de fois un caractère apparaît : =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;",";""))) donne le nombre de virgules dans la cellule A1. La différence entre la longueur originale et la longueur sans les virgules = nombre de virgules.
Utile pour valider la structure d'un texte (nombre de séparateurs dans un CSV, nombre de mots-clés, etc.).
Normalise la casse avant de comparer
Quand tu ne contrôles pas la casse des données sources, combine MINUSCULE et SUBSTITUE : =SUBSTITUE(MINUSCULE(A1);"paris";"lyon") trouvera "Paris", "PARIS" et "paris".
Reste conscient que le résultat sera en minuscules ; si tu veux conserver la casse originale avec remplacement insensible à la casse, c'est un cas VBA.
Questions fréquentes sur la fonction SUBSTITUE
Quelle est la différence entre SUBSTITUE et REMPLACER ?
SUBSTITUE cherche un texte précis dans toute la chaîne et le remplace, peu importe où il se trouve. REMPLACER remplace des caractères à une position fixe que tu définis. Si tu veux remplacer « Paris » par « Lyon », utilise SUBSTITUE. Si tu veux remplacer les caractères 3 à 7, utilise REMPLACER.
SUBSTITUE est-elle sensible à la casse ?
Oui, absolument. SUBSTITUE distingue majuscules et minuscules. Si tu cherches « ABC », ça ne remplacera pas « abc » ou « Abc ». Pour ignorer la casse, combine avec MAJUSCULE() ou MINUSCULE() pour normaliser le texte avant.
Comment remplacer plusieurs caractères différents en une fois ?
Imbrique plusieurs SUBSTITUE : =SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;"-";"");" ";"");"_";"") pour supprimer tirets, espaces et underscores. Tu peux enchaîner autant d'imbrications que nécessaire, mais au-delà de 5-6, une macro VBA devient plus lisible.
Que fait le paramètre no_occurrence exactement ?
Il te permet de remplacer seulement la 1ère, 2ème ou Nième occurrence d'un texte. Si no_occurrence vaut 2, seule la deuxième occurrence sera remplacée. Si tu l'omets, toutes les occurrences sont remplacées. Pratique pour modifier seulement une partie répétée dans un texte structuré.
SUBSTITUE peut-elle supprimer du texte au lieu de le remplacer ?
Oui. Utilise une chaîne vide "" comme nouveau_texte. Par exemple, =SUBSTITUE(A1;" ";"") supprime tous les espaces. C'est la technique la plus rapide pour nettoyer des caractères indésirables comme les espaces, tirets ou symboles.
Pour aller plus loin
Les fonctions similaires : REMPLACER, CHERCHE, STXT, EPURAGE, SUPPRESPACE
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

