Qu'est-ce que la fonction TEXTE. AVANT ?
TEXTE.AVANT (TEXTBEFORE en anglais) te sert dès que tu dois isoler le début d'un texte dont la longueur varie d'une ligne à l'autre, un cas où GAUCHE seul ne suffit pas puisqu'il faut lui indiquer un nombre de caractères fixe. Plutôt que d'empiler GAUCHE et CHERCHE pour repérer la position du séparateur, une seule formule suffit désormais.
Concrètement, c'est elle qui isole les prénoms dans une base RH, extrait les identifiants avant l'arobase dans un fichier CRM, découpe les codes département d'une référence produit ou récupère la partie client d'un numéro de commande. Elle gère même plusieurs occurrences du même délimiteur grâce à un paramètre dédié.
Syntaxe
=TEXTE.AVANT(texte; délimiteur; [correspondance_instance]; [mode_correspondance]; [mode_fin]; [si_non_trouvé])Clique sur un argument pour aller à son explication.
TEXTE.AVANT est disponible uniquement dans Microsoft 365 et Excel 2021+. Sur une version antérieure, reproduis le résultat avec =GAUCHE(A1; CHERCHE(délimiteur; A1)-1).

Comprendre chaque paramètre de la fonction TEXTE.AVANT
Seuls les deux premiers arguments sont obligatoires : tu donnes le texte à découper, puis le délimiteur où couper. Les quatre suivants sont là pour les cas tordus : choisir quelle occurrence du délimiteur viser, ignorer la casse, traiter la fin du texte comme un délimiteur, ou renvoyer un message au lieu d'une erreur quand le délimiteur manque.
Retiens surtout leur ordre, parce que c'est là que les formules cassent : le texte de secours est le sixième argument, pas le cinquième. Si tu l'écris en cinquième position, Excel croit que tu lui donnes un mode de fin et renvoie #VALEUR!.
Tu peux t'arrêter aux deux premiers dans 90 % des cas, et ne sortir les arguments facultatifs que le jour où tes données te posent un problème précis.
texte
: le texte source dans lequel la fonction cherche le délimiteurIl peut s'agir d'une référence de cellule comme A1, d'une chaîne entre guillemets comme "Jean Dupont", ou du résultat d'une autre formule. C'est dans ce texte que TEXTE.AVANT détermine où couper.
délimiteur
: le caractère ou la séquence qui marque la limite d'extractionLes délimiteurs courants sont l'espace " ", le tiret "-", l'arobase "@", le point "." ou la virgule ",". Tu peux aussi fournir plusieurs délimiteurs sous forme de tableau pour attraper le premier trouvé parmi plusieurs possibilités.
[correspondance_instance]
: définit quelle occurrence du délimiteur utiliser(facultatif)La valeur par défaut est 1 (le premier délimiteur trouvé). Avec 2, la fonction extrait tout avant le deuxième délimiteur. Un nombre négatif comme -1 compte depuis la fin du texte, ce qui permet d'extraire tout sauf le dernier segment.
[mode_correspondance]
: détermine si la recherche est sensible à la casse(facultatif)Par défaut (0), la recherche respecte les majuscules et minuscules. Avec la valeur 1, la casse est ignorée, ce qui est pratique pour des données saisies manuellement avec des incohérences.
[mode_fin]
: détermine si la fin du texte compte comme un délimiteur(facultatif)Par défaut (0), seul le délimiteur que tu as indiqué est cherché. Avec la valeur 1, la fin de la chaîne fait elle aussi office de délimiteur : =TEXTE.AVANT(A1; "@"; 1; 0; 1) sur marie.martin renvoie marie.martin en entier au lieu d'une erreur. C'est un argument numérique, et c'est celui qu'on oublie le plus souvent quand on veut atteindre le suivant.
[si_non_trouvé]
: valeur renvoyée si le délimiteur est absent du texte source(facultatif)Sans ce paramètre, la fonction produit une erreur #N/A. Passer "" ou un texte explicatif évite les erreurs dans les colonnes calculées. Attention à sa position : c'est le sixième argument, donc il faut laisser mode_fin vide avant lui, comme dans =TEXTE.AVANT(A1; "@"; 1; 0; ; "Pas d'email").

Exemples pratiques pas à pas
Comment extraire le texte avant un espace avec la fonction TEXTE.AVANT
Le séminaire est dans trois jours et tu dois envoyer un message d'accueil personnalisé à chaque personne de la liste, avec le prénom seul et rien d'autre. Ton tableau contient les noms complets, le service, le poste, la ville et l'ancienneté, mais aucune colonne ne donne le prénom isolé. La fonction TEXTE.AVANT coupe chaque nom au premier espace et te remplit la colonne des prénoms d'un seul geste.
- 1Dans une cellule, écris
=TEXTE.AVANT(. - 2En 1er argument : clique sur la cellule qui contient le texte à découper,
A2. Elle afficheJean Dupont, et c'est dans ce texte que la fonction cherchera où couper. - 3En 2ᵉ argument : saisis le délimiteur où la coupe se fait, un espace entre guillemets
" ". La fonction renvoie tout ce qui précède le premier espace rencontré et laisse tomber le reste. - 4Ferme la parenthèse et appuie sur Entrée.
=TEXTE.AVANT(A2; " ")A2 de gauche à droite, s'arrête net au premier espace et renvoie ce qui le précède, donc Jean. Recopiée vers le bas, elle sort le prénom de chaque ligne sans que tu aies à compter le moindre caractère, quelle que soit la longueur du nom.Comment extraire le texte avant la deuxième occurrence d'un délimiteur avec la fonction TEXTE.AVANT
Ton chef veut le chiffre par zone géographique avant la réunion de 14 heures, et tes numéros de commande suivent tous le format CLIENT-RÉGION-DATE. Le couple client et région dont tu as besoin tient sur les deux premiers segments, mais il est collé à une date dont tu ne veux pas. La fonction TEXTE.AVANT sait viser une occurrence précise du délimiteur, donc tu peux couper au deuxième tiret et garder le premier dans le résultat.
- 1Dans une cellule, écris
=TEXTE.AVANT(. - 2En 1er argument : clique sur la cellule qui contient le numéro de commande complet,
A2. Elle afficheFR001-IDF-20240315, et c'est dans cette référence que la fonction va chercher le tiret. - 3En 2ᵉ argument : saisis le délimiteur qui sépare les segments de la référence, un tiret entre guillemets
"-". À ce stade, la fonction couperait au premier tiret trouvé. - 4En 3ᵉ argument : saisis le rang de l'occurrence à viser,
2. Tu demandes le deuxième tiret plutôt que le premier, ce qui laisseFR001-IDFintact dans le résultat. - 5Ferme la parenthèse et appuie sur Entrée.
=TEXTE.AVANT(A2; "-"; 2)FR001-IDF. Sans ce 2, elle s'arrêterait au premier tiret et ne te rendrait que FR001.Comment éviter l'erreur #N/A avec la fonction TEXTE.AVANT
Le formulaire d'inscription est ouvert depuis une semaine et tu dois sortir la liste des identifiants avant de lancer la campagne. Tes contacts sont censés avoir saisi une adresse email, sauf que certains ont tapé un numéro de téléphone ou oublié la fin, et ces lignes-là n'ont pas d'arobase. La fonction TEXTE.AVANT accepte un texte de secours à afficher quand le délimiteur manque, donc ta colonne reste propre et les lignes douteuses se repèrent d'un coup d'œil.
- 1Dans une cellule, écris
=TEXTE.AVANT(. - 2En 1er argument : clique sur la cellule qui contient ce que le contact a saisi,
A2. C'est ce texte que la fonction va tenter de découper. - 3En 2ᵉ argument : saisis le délimiteur, l'arobase entre guillemets
"@", puisque c'est lui qui sépare l'identifiant du domaine dans une adresse email. - 4En 3ᵉ argument : saisis le rang de l'occurrence visée,
1, pour t'arrêter au premier arobase. C'est déjà la valeur par défaut, mais tu dois la poser pour atteindre le sixième argument, celui qui t'intéresse vraiment. - 5En 4ᵉ argument : saisis le mode qui respecte la casse,
0. Là encore c'est la valeur par défaut, et elle ne change rien ici puisque l'arobase n'a ni majuscule ni minuscule. - 6En 5ᵉ argument : saisis un point-virgule pour sauter la place de l'argument qui traite la fin du texte et le laisser à sa valeur par défaut. Cette place attend un nombre, donc si tu y glisses ton texte de secours, Excel le refuse et renvoie
#VALEUR!. - 7En 6ᵉ argument : saisis le texte affiché quand aucun arobase n'est trouvé,
"À vérifier". C'est lui qui remplace l'erreur#N/Apar un message que tu peux filtrer. - 8Ferme la parenthèse et appuie sur Entrée.
=TEXTE.AVANT(A2; "@"; 1; 0; ; "À vérifier")contact@entreprise.fr, la fonction coupe au premier arobase et renvoie contact. Sur 0612345678, il n'y a aucun arobase à trouver : le sixième argument prend le relais et affiche À vérifier au lieu de l'erreur #N/A qui contaminerait tout ce que tu construis derrière.
Regarde bien le point-virgule doublé avant "À vérifier". Il saute l'argument mode_fin pour que ton texte de secours arrive bien en sixième position. Sans cet espace vide, la formule entière renvoie #VALEUR! sur toutes les lignes, même celles qui contiennent un arobase.
Les erreurs fréquentes avec la fonction TEXTE.AVANT
Le cas que tu rencontreras le plus souvent est le #N/A : il tombe dès que le délimiteur que tu cherches n'existe pas dans la cellule, par exemple un "@" réclamé sur un texte qui n'en contient pas. Juste derrière vient le #NOM?, signe que ta version d'Excel est antérieure à 2021 et ne connaît tout simplement pas la fonction.
Les deux autres pièges sont plus discrets : un nombre pur passé à la place de texte qui déclenche #VALEUR!, et surtout les espaces invisibles d'un import CSV ou ERP qui décalent le délimiteur et faussent l'extraction sans rien signaler.
Erreur #N/A : le délimiteur est absent du texte source
TEXTE.AVANT renvoie #N/A dès que le délimiteur que tu cherches n'existe pas dans la cellule. Par exemple, =TEXTE.AVANT("Jean Dupont"; "@") échoue parce qu'il n'y a pas d'arobase dans ce texte.
Solution : Ajoute un sixième argument pour définir une valeur de secours : =TEXTE.AVANT(A1; "@"; 1; 0; ; "Pas d'email"). Le point-virgule doublé n'est pas une coquille, il saute l'argument mode_fin que tu laisses par défaut. Utilise "" si tu préfères une cellule visuellement vide.
Erreur #NOM? : la fonction n'est pas reconnue
TEXTE.AVANT est exclusif à Microsoft 365 et Excel 2021+. Sur une version antérieure, Excel ne connaît pas cette fonction et renvoie #NOM?.
Solution : Remplace par la combinaison classique =GAUCHE(A1; CHERCHE(" "; A1)-1) pour un espace, ou adapte le délimiteur dans CHERCHE. Cette approche fonctionne sur toutes les versions d'Excel.
Erreur #VALEUR! : un nombre est passé là où du texte est attendu
Si la cellule source contient un nombre pur (pas du texte), TEXTE.AVANT peut produire une erreur #VALEUR! selon la configuration.
Solution : Convertis le nombre en texte avant de l'analyser : =TEXTE.AVANT(TEXTE(A1; "0"); "-"). La fonction TEXTE transforme n'importe quelle valeur numérique en chaîne exploitable.
Résultat faux à cause d'espaces invisibles dans les données
Les données importées depuis un CSV ou un ERP contiennent souvent des espaces en début ou fin de cellule. Ces espaces parasites peuvent décaler la position du délimiteur et fausser l'extraction.
Solution : Imbrique SUPPRESPACE avant TEXTE.AVANT : =TEXTE.AVANT(SUPPRESPACE(A1); "@"). SUPPRESPACE élimine les espaces superflus avant que la formule ne cherche le délimiteur.

TEXTE.AVANT vs TEXTE.APRES vs GAUCHE vs STXT
Choisis TEXTE.AVANT quand tu veux ce qui précède un délimiteur sans connaître la longueur à l'avance, et que tu travailles sur Excel 365 ou 2021+. Si tu cherches au contraire ce qui suit le délimiteur (le domaine d'un email, un suffixe), c'est TEXTE.APRES qu'il te faut.
GAUCHE et STXT restent les bons choix sur les anciennes versions ou quand la découpe se fait à une position fixe : GAUCHE pour un préfixe de longueur connue, STXT pour piocher en plein milieu de la chaîne.
| Critère | TEXTE.AVANT | TEXTE.APRES | GAUCHE | STXT |
|---|---|---|---|---|
| Ce que la fonction extrait | Tout avant un délimiteur | Tout après un délimiteur | N premiers caractères | N caractères à partir d'une position |
| Besoin de connaître la longueur | Non, automatique | Non, automatique | Oui | Oui (position + longueur) |
| Gestion des occurrences multiples | Oui (3e argument) | Oui (3e argument) | Non | Non |
| Compatibilité | Microsoft 365 / Excel 2021+ | Microsoft 365 / Excel 2021+ | Toutes versions | Toutes versions |
| Cas d'usage typique | Prénom, code, identifiant email | Domaine email, suffixe de référence | Préfixe de longueur fixe | Extraction en milieu de chaîne |

Astuces avancées avec TEXTE.AVANT
Gérer les délimiteurs multiples en un seul appel
Quand tes données mélangent plusieurs séparateurs possibles (tiret, underscore, point), passe un tableau directement dans le deuxième argument : =TEXTE.AVANT(A1; {"-";"_";"."}) renvoie tout ce qui précède le premier de ces trois caractères trouvé dans la cellule.
Tu n'as pas besoin d'imbriquer plusieurs formules ni de créer des colonnes intermédiaires.
Compter depuis la fin avec un indice négatif
En passant -1 comme troisième argument, TEXTE.AVANT extrait tout avant le dernier délimiteur au lieu du premier. Sur FR001-IDF-20240315, =TEXTE.AVANT(A1; "-"; -1) renvoie FR001-IDF sans que tu aies à compter combien de tirets précèdent la date.
C'est particulièrement utile quand le dernier segment (date, version, extension) est le seul que tu veux éliminer.
Questions fréquentes
Oui, tu peux passer un tableau de délimiteurs comme deuxième argument. La fonction renvoie le texte situé avant le premier délimiteur trouvé parmi tous ceux que tu as indiqués. C'est très pratique quand tes données proviennent de sources variées avec des formats de séparation différents.
Par défaut, TEXTE.AVANT renvoie l'erreur #N/A. Pour éviter cela, utilise le paramètre si_non_trouvé pour définir une valeur par défaut, comme une chaîne vide ou un message personnalisé. C'est le sixième argument, donc il faut laisser mode_fin vide juste avant : =TEXTE.AVANT(A1; "@"; 1; 0; ; ""). Si tu places ton texte en cinquième position, Excel attend un nombre à cet endroit et renvoie #VALEUR!.
Utilise le troisième paramètre correspondance_instance : =TEXTE.AVANT(A1; "-"; 2) extrait tout le texte avant le deuxième tiret. Tu peux aussi utiliser un nombre négatif pour compter depuis la fin : -1 cible le dernier délimiteur, -2 l'avant-dernier.
Par défaut oui. Le quatrième paramètre mode_correspondance permet de changer ce comportement : mets 1 pour rendre la recherche insensible à la casse. Très utile pour traiter des données saisies manuellement avec des incohérences de majuscules.
TEXTE.AVANT cherche automatiquement un délimiteur et extrait tout ce qui le précède, sans que tu aies besoin de connaître la longueur du texte. GAUCHE nécessite de spécifier le nombre exact de caractères à extraire, ce qui impose souvent une combinaison avec CHERCHE pour les données de longueur variable.
Les espaces parasites peuvent fausser la position du délimiteur et produire des résultats inattendus. Imbrique SUPPRESPACE pour nettoyer les données avant extraction : =TEXTE.AVANT(SUPPRESPACE(A1); "@"). C'est recommandé systématiquement pour les imports CSV ou ERP.
Pour aller plus loin
Continue sur ta lancée après la fonction TEXTE.AVANT : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



