STXT Excel : Guide complet pour extraire du texte à la position exacte
=STXT(texte; no_départ; no_car)La formule STXT est l'une des fonctions texte les plus utiles d'Excel pour extraire une portion précise d'une chaîne de caractères. Contrairement à LEFT et RIGHT qui extraient depuis les extrémités, STXT vous permet de spécifier exactement où commencer et combien de caractères récupérer. Cette flexibilité en fait un outil indispensable pour manipuler des données structurées comme les codes produits, les numéros de client ou les identifiants. Que vous travailliez avec des données brutes à nettoyer, des identifiants complexes à analyser ou des textes à fractionner selon des règles précises, STXT offre une solution élégante et performante. Elle fonctionne sur toutes les versions d'Excel depuis 2007 et s'intègre parfaitement dans des formules plus complexes pour automatiser vos tâches de traitement de données. Dans ce guide complet, vous découvrirez comment maîtriser STXT, éviter les pièges courants et l'utiliser en combinaison avec d'autres fonctions pour résoudre des problèmes métier réels.
Syntaxe et paramètres
La syntaxe de STXT est simple mais puissante : =STXT(texte; no_départ; no_car). Le premier paramètre 'texte' est la chaîne source d'où vous extrairez les caractères. Il peut s'agir d'une référence de cellule, d'une chaîne entre guillemets ou du résultat d'une autre formule. Le paramètre 'no_départ' indique la position du premier caractère à extraire, en commençant à 1 (pas 0). Le troisième paramètre 'no_car' spécifie exactement combien de caractères vous souhaitez extraire à partir de cette position. Un point crucial : si no_départ est inférieur à 1 ou supérieur à la longueur du texte, STXT retournera une erreur #VALEUR!. De même, si no_car est négatif, vous obtiendrez une erreur. Si la somme de no_départ et no_car dépasse la longueur du texte, STXT extrait simplement jusqu'à la fin de la chaîne sans erreur. Pour une extraction robuste, combinez souvent STXT avec LEN pour vérifier les limites. Les caractères spéciaux, accents et espaces sont tous comptabilisés comme des caractères standards.
textstart_numnum_charsExemples pratiques
Extraction d'un code produit structuré
=STXT(A2;6;4)La formule commence à la position 6 (après 'PROD-') et extrait 4 caractères (l'année). Si A2 contient 'PROD-2024-12345', le résultat sera '2024'. Cette approche fonctionne parfaitement pour les données structurées avec un format fixe.
Extraction d'un numéro de client depuis un identifiant composite
=STXT(B2;FIND("-";B2;FIND("-";B2)+1)+1;6)Cette formule imbriquée trouve la deuxième occurrence du tiret, puis extrait 6 caractères à partir de cette position. Elle combine STXT avec FIND pour gérer des formats variables. Pour 'FR-2024-789456', elle retourne '789456'.
Extraction d'une plage horaire depuis un texte descriptif
=STXT(C2;FIND(" ";C2)+1;5)La formule trouve le premier espace, puis extrait 5 caractères (la durée de '14h30'). Cette approche est utile pour nettoyer des données textuelles semi-structurées. Le résultat sera '14h30'.
Points clés à retenir
- STXT extrait une portion précise d'une chaîne en spécifiant la position de départ et le nombre de caractères à récupérer.
- Contrairement à LEFT et RIGHT, STXT offre un contrôle total sur la position d'extraction, idéal pour les données structurées.
- Combinez STXT avec FIND, LEN et IFERROR pour créer des formules robustes et adaptables à des variations de données.
- Testez toujours vos formules STXT avec des données limites et des cas d'erreur pour éviter les surprises en production.
- STXT est disponible sur toutes les versions modernes d'Excel et fonctionne aussi sur Google Sheets et LibreOffice pour une portabilité maximale.
Astuces de pro
Utilisez des cellules nommées pour les positions de départ et de longueur. Cela rend vos formules auto-documentées et faciles à maintenir.
Impact : Améliore la lisibilité et facilite les modifications futures. Un autre utilisateur comprendra immédiatement l'intention de votre formule.
Testez toujours vos formules STXT avec des données limites (textes très courts, très longs, avec caractères spéciaux) avant de les déployer sur des milliers de lignes.
Impact : Évite les surprises en production et les corrections massives. Gagne du temps de débogage et d'optimisation.
Combinez STXT avec TRIM pour nettoyer les espaces parasites après extraction. Cela garantit des données propres pour les comparaisons ou recherches ultérieures.
Impact : Élimine les erreurs de correspondance dues aux espaces invisibles. Améliore la qualité des données pour les analyses suivantes.
Pour les formats fixes très répétitifs, créez une formule template dans une cellule et copiez-la. Ajouter des commentaires Excel expliquant la logique de position.
Impact : Réduit les erreurs de copie-collage et accélère le traitement de fichiers volumineux. Facilite la collaboration en équipe.
Combinaisons utiles
STXT + FIND pour extraction dynamique
=STXT(A1;FIND('-';A1)+1;FIND('-';A1;FIND('-';A1)+1)-FIND('-';A1)-1)Cette formule extrait le texte entre deux tirets. Elle trouve le premier tiret, puis le deuxième, et calcule la longueur à extraire. Utile pour parser des formats comme 'PREFIX-DATA-SUFFIX'.
STXT + LEN pour extraction depuis la fin
=STXT(A1;LEN(A1)-3;4)Extrait les 4 derniers caractères en utilisant LEN pour calculer dynamiquement la position. Remplace RIGHT quand vous devez combiner avec d'autres opérations.
STXT + IFERROR pour gestion d'erreurs robuste
=IFERROR(STXT(A1;B1;C1);'Erreur position')Gère les erreurs gracieusement en retournant un message personnalisé si les paramètres sont invalides. Essentiel pour les formules en production sur des données non validées.
Erreurs courantes
Cause : Le paramètre no_départ est inférieur à 1, supérieur à la longueur du texte, ou le paramètre no_car est négatif. Exemple : =STXT('Bonjour';0;3) ou =STXT('Bonjour';10;2).
Solution : Vérifiez que no_départ est au minimum 1 et que no_car est positif. Utilisez MAX(1;no_départ) pour garantir une valeur valide. Testez la longueur du texte avec LEN avant d'utiliser STXT.
Cause : La référence de cellule utilisée dans le paramètre 'texte' n'existe pas ou a été supprimée. Exemple : =STXT(Z999;1;3) si Z999 est une plage invalide.
Solution : Vérifiez que la cellule référencée existe et contient des données. Utilisez des références nommées ou des plages valides. Évitez les références circulaires.
Cause : La fonction est mal orthographiée ou non reconnue. Exemple : =STXTT(A1;1;3) au lieu de =STXT(A1;1;3), ou utilisation sur une version Excel très ancienne.
Solution : Vérifiez l'orthographe exacte de STXT. Assurez-vous que votre version d'Excel supporte cette fonction (disponible depuis Excel 2007). Utilisez l'assistant de fonction pour insérer la formule correctement.
Checklist de dépannage
- 1.Vérifiez que no_départ est ≥ 1 et ≤ LEN(texte). Utilisez =LEN(A1) pour connaître la longueur exacte.
- 2.Confirmez que no_car est positif et que la somme (no_départ + no_car) ne dépasse pas significativement la longueur du texte.
- 3.Testez avec une valeur fixe d'abord (ex: =STXT(A1;1;3)) avant d'utiliser des formules imbriquées pour localiser les positions.
- 4.Vérifiez les caractères invisibles ou les espaces parasites avec =LEN() ou en activant l'affichage des caractères non imprimables.
- 5.Assurez-vous que la cellule source contient du texte et non des nombres. Les nombres peuvent nécessiter une conversion avec TEXT().
- 6.Testez la compatibilité de votre version Excel. STXT est disponible depuis 2007, mais vérifiez si vous utilisez une version très ancienne.
Cas particuliers
Texte vide ou cellule vide
Comportement : =STXT('';1;3) retourne une chaîne vide sans erreur. =STXT(A1;1;3) où A1 est vide retourne aussi une chaîne vide.
Solution : Utilisez =IF(A1='';'N/A';STXT(A1;1;3)) pour gérer les cellules vides explicitement.
Utile pour éviter que des résultats vides ne perturbent vos analyses ou rapports.
Position de départ égale à la longueur du texte + 1
Comportement : =STXT('Bonjour';8;3) retourne une chaîne vide (pas d'erreur) car il n'y a rien à extraire.
Solution : Vérifiez que no_départ ≤ LEN(texte) avant d'utiliser STXT pour éviter les résultats vides inattendus.
Excel ne génère pas d'erreur mais retourne un résultat vide, ce qui peut masquer des problèmes logiques.
Caractères Unicode ou emojis
Comportement : STXT compte chaque emoji ou caractère Unicode comme 1 caractère. =STXT('Bonjour😀';1;7) retourne 'Bonjour'.
Solution : Testez avec vos données réelles contenant des caractères spéciaux pour valider le comportement attendu.
Utile pour traiter des textes multilingues ou contenant des symboles spéciaux sans surprise.
Limitations
- •STXT ne peut extraire que des caractères consécutifs. Pour extraire des caractères non contigus, vous devez utiliser plusieurs formules STXT ou CONCATENER les résultats.
- •La fonction ne supporte pas les expressions régulières. Pour des recherches complexes avec motifs, vous devez combiner STXT avec FIND, SEARCH ou des fonctions plus avancées.
- •STXT retourne toujours du texte, même si les caractères extraits sont des chiffres. Pour les calculs numériques, vous devez convertir le résultat avec VALUE().
- •Sur de très grandes plages (millions de lignes), les formules STXT imbriquées peuvent ralentir les performances. Considérez l'utilisation de Power Query ou de VBA pour les traitements massifs.
Alternatives
Compatibilité
✓ Excel
Depuis 2007
=STXT(texte; no_départ; no_car) - Identique sur toutes les versions 2007 à 365✓Google Sheets
=MID(texte; no_départ; no_car) - Utilisez MID au lieu de STXT dans Google SheetsGoogle Sheets utilise MID comme fonction équivalente. La syntaxe est identique, seul le nom change.
✓LibreOffice
=MID(texte; no_départ; no_car) - Utilisez MID dans LibreOffice Calc