Aller au contenu principal

Qu'est-ce que la fonction TEXTE.AVANT ?

Définition
La fonction TEXTE.AVANT extrait la partie d'un texte située avant un délimiteur donné. Elle accepte plusieurs occurrences du délimiteur et renvoie #N/A si le délimiteur est absent (sauf si un texte de remplacement est précisé).

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

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).

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

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.

1

texte

: le texte source dans lequel la fonction cherche le délimiteur

Il 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.

2

délimiteur

: le caractère ou la séquence qui marque la limite d'extraction

Les 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.

3

[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.

4

[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.

5

[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.

6

[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").

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =TEXTE.AVANT(.
  2. 2
    En 1er argument : clique sur la cellule qui contient le texte à découper, A2. Elle affiche Jean Dupont, et c'est dans ce texte que la fonction cherchera où couper.
  3. 3
    En 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.
  4. 4
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=TEXTE.AVANT(A2; " ")
Explication
Ici, la fonction lit 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =TEXTE.AVANT(.
  2. 2
    En 1er argument : clique sur la cellule qui contient le numéro de commande complet, A2. Elle affiche FR001-IDF-20240315, et c'est dans cette référence que la fonction va chercher le tiret.
  3. 3
    En 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é.
  4. 4
    En 3ᵉ argument : saisis le rang de l'occurrence à viser, 2. Tu demandes le deuxième tiret plutôt que le premier, ce qui laisse FR001-IDF intact dans le résultat.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=TEXTE.AVANT(A2; "-"; 2)
Explication
Le troisième argument change la cible de la coupe : au lieu du premier tiret, la fonction TEXTE.AVANT vise le deuxième et renvoie tout ce qui le précède, donc FR001-IDF. Sans ce 2, elle s'arrêterait au premier tiret et ne te rendrait que FR001.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =TEXTE.AVANT(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 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.
  5. 5
    En 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.
  6. 6
    En 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!.
  7. 7
    En 6ᵉ argument : saisis le texte affiché quand aucun arobase n'est trouvé, "À vérifier". C'est lui qui remplace l'erreur #N/A par un message que tu peux filtrer.
  8. 8
    Ferme la parenthèse et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :=TEXTE.AVANT(A2; "@"; 1; 0; ; "À vérifier")
Explication
Sur 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.
Le conseil du pro
Si une cellule risque de ne pas contenir le délimiteur, passe une chaîne vide en sixième argument : tu évites les #N/A qui viendraient bloquer tes RECHERCHEV ou SOMME.SI en aval. Attention au point-virgule vide qui saute le cinquième argument, mode_fin : si tu l'oublies, ta chaîne de secours atterrit dans mode_fin, qui attend un nombre, et Excel renvoie #VALEUR! à la place.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreTEXTE.AVANTTEXTE.APRESGAUCHESTXT
Ce que la fonction extraitTout avant un délimiteurTout après un délimiteurN premiers caractèresN caractères à partir d'une position
Besoin de connaître la longueurNon, automatiqueNon, automatiqueOuiOui (position + longueur)
Gestion des occurrences multiplesOui (3e argument)Oui (3e argument)NonNon
CompatibilitéMicrosoft 365 / Excel 2021+Microsoft 365 / Excel 2021+Toutes versionsToutes versions
Cas d'usage typiquePrénom, code, identifiant emailDomaine email, suffixe de référencePréfixe de longueur fixeExtraction en milieu de chaîne
Le combo gagnant
TEXTE.AVANT récupère ce qui précède le délimiteur, TEXTE.APRES ce qui le suit. Sur une adresse email, la première te donne l'identifiant et la seconde le domaine : ensemble elles découpent proprement un champ des deux côtés du même séparateur.
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec TEXTE.AVANT

1Astuce

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.

2Astuce

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.

FAQ

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.

Ressources

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