S’ouvre dans un nouvel onglet

Extraire du texte entre deux caractères dans Excel : toutes les méthodes

Extraire du texte entre deux caractères dans Excel

Vos données contiennent des chaînes comme REF-(AB-123)-2024, [CODE] Produit (variante) ou Prix : 49€ (HT) — et vous voulez juste extraire la partie entre parenthèses, entre crochets, ou entre deux tirets.

En apparence, c’est simple. En pratique, Excel vous réserve une surprise.

La formule native pour ce cas existe, mais elle ressemble à ça :

=SIERREUR(STXT(A1;TROUVE("(";A1)+1;TROUVE(")";A1)-TROUVE("(";A1)-1);"")

Lisible ? Non. Maintenable ? Difficilement. Explicable à un collègue ? Bonne chance.

Dans cet article, on décortique comment cette formule fonctionne, quand elle atteint ses limites, et comment l’écrire en une seule fonction lisible grâce à une approche formula-based.


Comment Excel extrait du texte : comprendre STXT et TROUVE

Avant de passer aux solutions, il est utile de comprendre les deux fonctions sur lesquelles tout repose.

La fonction STXT

STXT(texte; position_départ; nombre_caractères) extrait un nombre défini de caractères à partir d’une position dans une chaîne.

=STXT("Bonjour monde"; 9; 5)
→ "monde"

Elle est simple en soi. Le problème : elle demande une position de départ et un nombre de caractères fixes. Dans des données réelles, ces positions varient d’une cellule à l’autre.

La fonction TROUVE

TROUVE(texte_cherché; texte; [départ]) renvoie la position d’un caractère dans une chaîne.

=TROUVE("("; "REF-(AB-123)-2024")
→ 5

C’est TROUVE qui permet de rendre STXT dynamique. Mais combiner les deux pour extraire ce qui se trouve entre deux délimiteurs crée inévitablement une formule imbriquée à plusieurs niveaux.


La formule native STXT + TROUVE : comment ça marche (et où ça coince)

Construction pas à pas

Pour extraire le texte entre ( et ) dans la cellule A1 :

Étape 1 — Trouver la position du délimiteur ouvrant :

=TROUVE("("; A1)          → position du "("

Étape 2 — Le caractère à extraire commence juste après :

=TROUVE("("; A1) + 1      → position du premier caractère à extraire

Étape 3 — Calculer le nombre de caractères entre les deux délimiteurs :

=TROUVE(")"; A1) - TROUVE("("; A1) - 1

Étape 4 — Combiner dans STXT :

=STXT(A1; TROUVE("(";A1)+1; TROUVE(")";A1)-TROUVE("(";A1)-1)

Étape 5 — Ajouter SIERREUR pour gérer les cellules sans délimiteur :

=SIERREUR(STXT(A1;TROUVE("(";A1)+1;TROUVE(")";A1)-TROUVE("(";A1)-1);"")

Chaque étape est logique. Leur combinaison produit une formule que personne ne peut relire d’un coup d’œil.

Les limites de cette approche

Occurrences multiples : Si votre chaîne contient plusieurs paires de délimiteurs ((A) et (B)), la formule extrait toujours entre la première occurrence. Gérer la deuxième ou la troisième nécessite d’imbriquer une nouvelle couche de TROUVE avec un paramètre de départ — la formule double de longueur.

Délimiteurs différents gauche/droite : Entre [ et ], entre { et }, entre < et > — chaque variante demande sa propre formule. Pas de paramètre générique.

Sensibilité à la casse : TROUVE est sensible à la casse. Pour une recherche insensible, il faut remplacer par CHERCHE, ce qui allonge encore la formule.

Lisibilité en équipe : Une formule de 70 caractères avec trois appels imbriqués à TROUVE est une bombe à retardement dans un fichier partagé. Personne n’ose la modifier. Tout le monde la contourne.


Cas pratiques avec la formule native

Extraire entre parenthèses

=SIERREUR(STXT(A1;TROUVE("(";A1)+1;TROUVE(")";A1)-TROUVE("(";A1)-1);"")
Cellule A1 Résultat
REF-(AB-123)-2024 AB-123
Produit (ref: XL) ref: XL
Sans parenthèses (vide)

Extraire entre crochets

=SIERREUR(STXT(A1;TROUVE("[";A1)+1;TROUVE("]";A1)-TROUVE("[";A1)-1);"")
Cellule A1 Résultat
[CODE-42] Description produit CODE-42
Statut [EN COURS] - Priorité haute EN COURS

Extraire entre deux tirets

=SIERREUR(STXT(A1;TROUVE("-";A1)+1;TROUVE("-";A1;TROUVE("-";A1)+1)-TROUVE("-";A1)-1);"")

Ici on cherche le deuxième tiret à partir de la position du premier — la formule commence à devenir vraiment difficile à maintenir.


La solution formula-based : =PF.EXTRAIRE.DELIM()

HexFormula propose une fonction dédiée qui fait exactement la même chose, en une syntaxe lisible :

=PF.EXTRAIRE.DELIM(texte; delim_gauche; delim_droite; [occurrence]; [sensible_casse])

Paramètres

Paramètre Description Obligatoire
texte La cellule ou chaîne source Oui
delim_gauche Le délimiteur ouvrant Oui
delim_droite Le délimiteur fermant Oui
occurrence Quelle occurrence extraire (défaut : 1) Non
sensible_casse VRAI/FAUX (défaut : FAUX) Non

Les mêmes cas pratiques, en lisible

Entre parenthèses :

=PF.EXTRAIRE.DELIM(A1; "("; ")")
→ AB-123

Entre crochets :

=PF.EXTRAIRE.DELIM(A1; "["; "]")
→ CODE-42

Entre tirets — deuxième occurrence :

=PF.EXTRAIRE.DELIM(A1; "-"; "-"; 2)
→ extrait entre le 2e et le 3e tiret

Insensible à la casse :

=PF.EXTRAIRE.DELIM(A1; "(a"; ")"; 1; FAUX)

N’importe quel collègue peut lire cette formule et comprendre ce qu’elle fait sans ouvrir la documentation.

Avantages concrets en équipe

  • Auditabilité : La logique est visible dans la cellule
  • Modification simple : Changer le délimiteur = modifier une chaîne de texte
  • Gestion des occurrences : Un seul paramètre supplémentaire, pas une formule réécrite
  • IntelliSense intégré : La description des paramètres s’affiche en direct dans Excel

[INTERNAL LINK: /fonctions/texte « Voir toutes les fonctions texte HexFormula »]


Comparatif des approches

Critère STXT + TROUVE =PF.EXTRAIRE.DELIM
Lisibilité ❌ Difficile ✅ Immédiate
Gestion des occurrences ❌ Imbrication complexe ✅ Paramètre simple
Délimiteurs variables ❌ Formule à réécrire ✅ Paramètre texte
Maintenable en équipe ❌ Risqué ✅ Oui
Sans add-in ✅ Oui ❌ Requiert HexFormula
Performance ✅ Natif ✅ C# (rapide)

FAQ

Peut-on extraire du texte entre deux mots (et pas seulement des symboles) ?

Oui. =PF.EXTRAIRE.DELIM(A1; "Prix : "; " €") extrait la valeur numérique entre « Prix :  » et  » € ». Les délimiteurs peuvent être des mots ou des expressions, pas uniquement des caractères uniques.

Que se passe-t-il si le délimiteur est absent de la cellule ?

La fonction renvoie une chaîne vide par défaut, sans afficher d’erreur. Pas besoin d’envelopper dans SIERREUR.

Comment extraire la dernière occurrence quand il y en a plusieurs ?

Passez -1 comme paramètre d’occurrence : =PF.EXTRAIRE.DELIM(A1; "("; ")"; -1) extrait entre la dernière paire de parenthèses.

Est-ce que la formule fonctionne sur des colonnes entières ?

Oui, comme n’importe quelle formule Excel. Vous pouvez l’appliquer sur toute une colonne, dans un tableau structuré, ou dans une formule matricielle.

La formule STXT + TROUVE est-elle vraiment plus lente ?

Sur des fichiers de moins de 10 000 lignes, la différence est imperceptible. Sur de grands volumes de données, les fonctions C# de HexFormula offrent un avantage mesurable puisqu’elles ne sont pas interprétées comme les formules VBA.


Conclusion

Extraire du texte entre deux délimiteurs dans Excel est techniquement faisable avec les fonctions natives. Mais la formule résultante — une imbrication de STXT et TROUVE — est difficile à lire, à maintenir et à expliquer.

Pour des fichiers que vous gérez seul et qui ne changeront plus, la formule native fait le travail. Pour tout le reste — fichiers partagés, modèles réutilisables, données variables — une approche formula-based comme =PF.EXTRAIRE.DELIM() élimine la complexité sans sacrifier la puissance.

Essayez HexFormula Gratuitement

Si vous savez utiliser SOMME(), vous savez utiliser HexFormula
=Pf.SOMME_SI_COULEUR(C2:C1000; ref)

Table des matières