🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel LEFT, RIGHT et MID — Extraire du texte par position (et sa grande faiblesse)

|

Excel LEFT, RIGHT et MID — Extraire du texte par position (et sa grande faiblesse)

En brefLEFT (français : GAUCHE), RIGHT (français : DROITE) et MID (français : STXT) sont trois règles graduées qui découpent une chaîne par position : LEFT(text, n) prend les n premiers caractères, RIGHT(text, n) prend les n derniers, et MID(text, start, n) prend n caractères à partir de la position start. Deux pièges guettent tout le monde : le résultat est toujours du texte — un LEFT(A2,4) qui extrait "2026" ne se laissera ni additionner par SUM ni comparer comme un nombre tant que vous ne l'enveloppez pas dans VALUE() — et les positions codées en dur sont fragiles : dès qu'un code change de longueur, votre découpe atterrit au mauvais endroit. MID compte à 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 MID commence à 1, et comment LEFT/RIGHT/MID se 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, TEXTSPLIT ou 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_chars sur LEFT/RIGHT et 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 à « 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