TEXTE.AVANT (TEXTBEFORE en anglais) est la fonction Excel 365 qui extrait automatiquement tout ce qui se trouve avant un délimiteur de ton choix. Fini les combinaisons interminables de GAUCHE et CHERCHE pour récupérer un prénom, un code département ou un identifiant d'email : 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 de la fonction TEXTE.AVANT
=TEXTE.AVANT(texte; délimiteur; [correspondance_instance]; [mode_correspondance]; [si_non_trouvé])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 trois suivants sont là pour les cas tordus : choisir quelle occurrence du délimiteur viser, ignorer la casse, ou renvoyer un message au lieu d'une erreur quand le délimiteur manque.
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.
Astuce : Tu peux passer un tableau de délimiteurs : =TEXTE.AVANT(A1; {"-";"_";"."}) renvoie le texte avant le premier de ces trois séparateurs trouvé dans la cellule.
[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.
[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.
Astuce : Utilise =TEXTE.AVANT(A1; "@"; 1; 0; "Pas d'email") pour renvoyer un message lisible plutôt que #N/A quand la cellule ne contient pas d'arobase.
Pas envie d'écrire la formule TEXTE.AVANT à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
RH : extraire les prénoms d'une base employés
Tu gères une base de données RH avec des noms complets et tu dois isoler les prénoms pour créer des adresses email ou personnaliser des communications internes. TEXTE.AVANT s'appuie sur le premier espace comme délimiteur naturel entre le prénom et le nom de famille.
| A | B | |
|---|---|---|
| 1 | Nom complet | Prénom extrait |
| 2 | Jean Dupont | Jean |
| 3 | Marie-Claire Martin | Marie-Claire |
| 4 | Luc De La Fontaine | Luc |
=TEXTE.AVANT(A2; " ")Ici, la fonction extrait tout ce qui précède le premier espace : Jean, Marie-Claire ou Luc. Pour les noms composés avec tiret, le résultat reste correct car le tiret fait partie du prénom, pas un séparateur de mots au sens de cette fonction.
CRM : extraire les identifiants d'adresses email
Dans un CRM, tu dois extraire les identifiants des adresses email pour créer des noms d'utilisateur ou analyser les conventions de nommage de tes contacts. L'arobase est un délimiteur parfaitement fiable : il est unique dans toute adresse email valide.
| A | B | |
|---|---|---|
| 1 | Identifiant | |
| 2 | contact@entreprise.fr | contact |
| 3 | jean.dupont@ledojo.club | jean.dupont |
| 4 | support@client.com | support |
=TEXTE.AVANT(A2; "@")Ici, la fonction isole tout ce qui précède l'arobase en une seule opération : contact, jean.dupont, support. Pour sécuriser contre les cellules vides ou les textes sans arobase, ajoute le cinquième argument si_non_trouvé (par exemple "").
Astuce de pro : Si une cellule peut ne pas contenir d'arobase, passe "" en cinquième argument pour éviter les #N/A qui bloqueraient tes RECHERCHEV ou SOMME.SI en aval.
Logistique : isoler le code département d'une référence produit
Tes références produit suivent le format DÉPARTEMENT-ANNÉE-NUMÉRO et tu veux regrouper les ventes ou les tickets par département pour faciliter les analyses. TEXTE.AVANT extrait uniquement le code avant le premier tiret.
| A | B | |
|---|---|---|
| 1 | Référence produit | Département |
| 2 | VENTE-2024-001 | VENTE |
| 3 | SUPPORT-2024-042 | SUPPORT |
| 4 | MARKETING-2024-128 | MARKETING |
=TEXTE.AVANT(A2; "-")Ici, la fonction renvoie le code avant le premier tiret : VENTE, SUPPORT ou MARKETING selon la ligne. Tu obtiens une colonne exploitable directement dans un tableau croisé dynamique ou dans un SOMME.SI par département.
Administration des ventes : extraire le couple Client-Région d'un numéro de commande
Dans ton système de gestion des commandes, les numéros suivent le format CLIENT-RÉGION-DATE. Tu veux extraire le couple CLIENT-RÉGION pour segmenter les ventes par zone géographique, en conservant le premier tiret dans le résultat.
| A | B | |
|---|---|---|
| 1 | N° Commande | Client-Région |
| 2 | FR001-IDF-20240315 | FR001-IDF |
| 3 | BE042-BRX-20240316 | BE042-BRX |
| 4 | CH088-GEN-20240317 | CH088-GEN |
=TEXTE.AVANT(A2; "-"; 2)Le 2 passé en troisième argument vise le deuxième tiret : la fonction extrait tout ce qui le précède (FR001-IDF, BE042-BRX, CH088-GEN). Sans cet argument, elle s'arrêterait au premier tiret et ne renverrait que le code client.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes 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 cinquième argument pour définir une valeur de secours : =TEXTE.AVANT(A1; "@"; 1; 0; "Pas d'email"). 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 sur la fonction TEXTE.AVANT
TEXTE.AVANT fonctionne-t-elle avec plusieurs délimiteurs ?
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.
Que se passe-t-il si le délimiteur n'est pas trouvé ?
Par défaut, TEXTE.AVANT renvoie l'erreur #N/A. Pour éviter cela, utilise le cinquième paramètre si_non_trouvé pour définir une valeur par défaut, comme une chaîne vide ou un message personnalisé. Exemple : =TEXTE.AVANT(A1; "@"; 1; 0; "").
Comment extraire le texte avant la deuxième occurrence d'un délimiteur ?
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.
TEXTE.AVANT est-elle sensible à la casse ?
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.
Quelle est la différence entre TEXTE.AVANT et GAUCHE ?
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.
Peut-on utiliser TEXTE.AVANT sur des données avec des espaces en début de cellule ?
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
Les fonctions similaires : TEXTE.APRES, GAUCHE, STXT, CHERCHE, TROUVE
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

