En bref —
LEFT(français : GAUCHE),RIGHT(français : DROITE) etMID(français : STXT) sont trois règles graduées qui découpent une chaîne par position :LEFT(text, n)prend lesnpremiers caractères,RIGHT(text, n)prend lesnderniers, etMID(text, start, n)prendncaractères à partir de la positionstart. Deux pièges guettent tout le monde : le résultat est toujours du texte — unLEFT(A2,4)qui extrait"2026"ne se laissera ni additionner parSUMni comparer comme un nombre tant que vous ne l'enveloppez pas dansVALUE()— et les positions codées en dur sont fragiles : dès qu'un code change de longueur, votre découpe atterrit au mauvais endroit.MIDcompte à partir de 1, pas de 0. Fonctionne dans toutes les versions d'Excel.
=LEFT("INV-2026-0042", 3) ' -> "INV"
=RIGHT("INV-2026-0042", 4) ' -> "0042"
=MID("INV-2026-0042", 5, 4) ' -> "2026"
Toute feuille de calcul finit un jour par devoir extraire un morceau d'une chaîne
plus longue — l'année d'un numéro de facture, l'indicatif d'un numéro de
téléphone, le prénom d'un nom complet. LEFT, RIGHT et MID sont la manière la
plus ancienne et la plus portable de le faire, et elles méritent qu'on les
comprenne en profondeur à cause de leurs limites, et non malgré elles.
Ce que vous allez apprendre
- L'unique question à se poser avant chaque extraction : est-ce que je découpe par position ou par contenu ?
- Pourquoi
MIDcommence à 1, et commentLEFT/RIGHT/MIDse partagent la même chaîne - Pourquoi le texte extrait est du texte — et le correctif
VALUE()qui garde vos calculs en vie - Pourquoi une position codée en dur est la ligne la plus fragile de votre feuille
- Quand s'arrêter et passer plutôt à
FIND,TEXTSPLITou Power Query
Le modèle mental : trois règles posées sur la même chaîne
Imaginez la chaîne INV-2026-0042 avec une règle graduée en dessous, les
positions numérotées à partir de 1. LEFT lit depuis le bord gauche vers
l'intérieur, RIGHT lit depuis le bord droit vers l'intérieur, et MID démarre où
vous pointez et lit vers la droite. Elles ne cherchent pas, elles ne comprennent
pas les données — elles ne font que compter des caractères et couper.
' position : 1 2 3 4 5 6 7 8 9 ...
' chaîne : I N V - 2 0 2 6 - 0 0 4 2
=LEFT(A2, 3) ' "INV" — les 3 premiers
=MID(A2, 5, 4) ' "2026" — 4 caractères à partir de la position 5
=RIGHT(A2, 4) ' "0042" — les 4 derniers
C'est toute l'idée. La puissance et le danger viennent du même fait : vous vous engagez sur des positions exactes. Quand les positions sont garanties — un code à largeur fixe, un préfixe de pays toujours composé de deux lettres — ces fonctions sont parfaites. Quand elles ne le sont pas, vous bâtissez sur du sable (nous y reviendrons plus bas).
La règle qui débloque tout : le résultat est toujours du texte
Voici le piège qui pousse les gens à demander sur les forums « pourquoi mon nombre
extrait ne s'additionne-t-il pas ? ». LEFT, RIGHT et MID renvoient
toujours du texte, même quand chaque caractère est un chiffre. LEFT("2026-04", 4) vous donne le texte "2026", pas le nombre 2026 — du coup SUM, >,
MIN et un axe de graphique le traitent tous comme une étiquette.
Reconvertissez-le explicitement en nombre :
=VALUE(LEFT(A2, 4)) ' texte "2026" -> nombre 2026
=--LEFT(A2, 4) ' la même chose, avec une double négation
L'inverse mérite aussi d'être connu : parce que la sortie est du texte, les zéros
de tête survivent. RIGHT("0042", 4) conserve "0042" au lieu de le réduire à 42
— ce qui est exactement ce que vous voulez pour les codes postaux, les numéros de
compte et les références, et exactement ce que vous devez défaire avec VALUE()
quand vous avez réellement besoin de faire des calculs.
MID compte à partir de 1, et num_chars est indulgent
MID(text, start_num, num_chars) est basé sur 1 : MID("Excel", 1, 2) vaut
"Ex", pas "xc". L'erreur d'une unité ici est la faute MID la plus courante —
si votre découpe est décalée d'un caractère, vérifiez si vous n'avez pas supposé un
comptage à partir de 0, hérité d'un autre langage.
Deux petites clémences évitent à LEFT/RIGHT/MID de tomber en erreur :
- Omettez
num_charssurLEFT/RIGHTet il vaut 1 par défaut. - Demandez plus de caractères qu'il n'en existe et vous récupérez le reste de
la chaîne, sans erreur.
RIGHT("AB", 10)renvoie"AB", pas#VALUE!.
Ces fonctions plantent donc rarement — elles échouent en silence en renvoyant la mauvaise découpe, ce qui est pire. C'est là le vrai risque, et il mène droit à leur grande faiblesse.
La grande faiblesse : les positions codées en dur sont fragiles
=RIGHT(A2, 4) pour récupérer les quatre derniers chiffres marche à merveille —
jusqu'au moment où arrive un enregistrement avec un suffixe à 5 chiffres, et là
vous laissez silencieusement tomber un chiffre sur chaque valeur de la colonne.
Une position que vous avez saisie à la main ne reste correcte que tant que les
données conservent exactement la forme que vous aviez supposée. Les données du
monde réel ne le font pas.
Le motif robuste n'est pas un MID plus long — c'est d'arrêter de découper par
position et de commencer à découper par contenu : trouvez le délimiteur, puis
découpez par rapport à lui.
' Fragile : suppose que le nom est toujours « Prénom Nom » avec l'espace en 6
=LEFT(A2, 5)
' Robuste : coupe là où se trouve réellement le premier espace
=LEFT(A2, FIND(" ", A2) - 1) ' premier mot, quelle que soit sa longueur
=MID(A2, FIND("@", A2) + 1, 99) ' tout ce qui suit le @ dans un e-mail
Ce FIND(" ", A2) est le pivot. LEFT/MID/RIGHT répondent à « donne-moi les
caractères ici » ; FIND et SEARCH répondent à
« où se trouve le repère sur lequel je dois couper ? ». Combinées, elles
transforment une découpe fragile à position fixe en une découpe qui suit les
données. Apprenez FIND (français : TROUVE) ensuite — c'est ce qui rend ces trois
fonctions fiables au lieu de simplement pratiques.
Le bon réflexe : quand utiliser la position, et quand s'en abstenir
Utilisez LEFT/RIGHT/MID seuls quand la position est véritablement fixe — un
code de devise à 3 lettres, un export hérité à largeur fixe, les deux premiers
caractères d'une abréviation d'État. Associez-les à FIND/SEARCH (français :
CHERCHE) dès que le point de coupe dépend du contenu de la chaîne.
Et sachez quand les ranger complètement. Si vous imbriquez LEFT/MID/RIGHT et
FIND sur trois niveaux juste pour casser une chaîne au niveau de ses
délimiteurs, c'est le signe que vous voulez
TEXTSPLIT (français : FRACTIONNER.TEXTE,
Excel 365), qui découpe sur un délimiteur en une seule formule lisible. Pour un
nettoyage ponctuel d'un import volumineux, Convertir (Texte en colonnes) ou
Power Query est plus léger qu'une colonne de formules fragiles.
LEFT/MID/RIGHT sont des scalpels — précis, mais aussi bons que votre visée.
Comment ExcelMaster vous aide
Le plus dur dans l'extraction n'est presque jamais la fonction — c'est d'obtenir
les bonnes positions et de les garder robustes. ExcelMaster prend une
demande en français courant comme « extrais l'année du numéro de facture et le
domaine de l'e-mail » et écrit la formule avec les bons points d'ancrage FIND,
une enveloppe VALUE() quand le résultat doit être un nombre, et une note quand une
position fixe casserait à la prochaine ligne atypique. Vous décrivez ce qu'il faut
extraire ; il s'occupe du comptage de caractères.
Foire aux questions
Quelle est la différence entre LEFT, RIGHT et MID ?
LEFT(text, n) renvoie les n premiers caractères, RIGHT(text, n) renvoie les
n derniers, et MID(text, start, n) renvoie n caractères à partir de la
position start. LEFT et RIGHT coupent depuis un bord ; MID coupe à partir de
n'importe quel point que vous désignez.
Pourquoi mon nombre extrait ne s'additionne-t-il pas ?
Parce que LEFT, RIGHT et MID renvoient toujours du texte, même quand cela
ressemble à un nombre. Enveloppez le résultat dans VALUE() — =VALUE(LEFT(A2,4))
— ou préfixez-le d'une double négation =--LEFT(A2,4) pour le convertir en
véritable nombre.
MID commence-t-il à 0 ou à 1 ?
À 1. MID("Excel", 1, 2) renvoie "Ex". Le premier caractère est à la position 1,
pas 0 — une source courante d'erreurs d'une unité pour les programmeurs habitués à
d'autres langages.
Comment extraire le texte jusqu'à un caractère précis ?
Combinez LEFT avec FIND : =LEFT(A2, FIND(" ", A2) - 1) renvoie tout ce qui
précède le premier espace. C'est bien plus robuste qu'une longueur codée en dur,
car cela suit la position réelle du caractère.
Que se passe-t-il si je demande à MID plus de caractères que la chaîne n'en contient ?
Rien ne casse — MID (ainsi que RIGHT/LEFT) renvoie simplement tout ce qui
existe. RIGHT("AB", 10) renvoie "AB", pas une erreur. C'est pratique, mais cela
signifie aussi qu'une mauvaise longueur échoue en silence au lieu de vous avertir.
Testé dans
Testé dans : Excel 365 (Windows 11) — dernière vérification le 2026-06-29.
Guides associés : Excel FIND et SEARCH · Excel SUBSTITUTE et REPLACE · Excel TEXTSPLIT · Excel TEXTJOIN
