Fonction CTXT ExcelGuide Complet 2026 : Extraire du Texte avec Précision
CTXT (MID en anglais) est LA fonction Excel pour extraire un morceau de texte précis depuis n'importe quelle position dans une chaîne de caractères. Que tu analyses des codes produits, extraies des codes postaux d'adresses complètes, ou découpes des numéros de série, CTXT te donne un contrôle chirurgical sur tes données textuelles.
Contrairement à GAUCHE qui extrait depuis le début ou DROITE depuis la fin, CTXT te permet de cibler exactement les caractères que tu veux, où qu'ils se trouvent. C'est particulièrement puissant quand tes données suivent un format structuré et que tu dois isoler une partie spécifique.
Dans ce guide, tu vas découvrir comment utiliser CTXT efficacement avec des exemples concrets du monde professionnel. Fini le découpage manuel de données qui te fait perdre des heures !
Syntaxe de la fonction CTXT
=CTXT(texte; no_départ; no_car)La fonction CTXT prend trois paramètres essentiels : le texte source, la position où commencer l'extraction (en comptant depuis le premier caractère), et le nombre de caractères à extraire. C'est cette précision qui la rend indispensable pour le traitement de données structurées.
Comprendre chaque paramètre de la fonction CTXT
texte
(obligatoire)C'est la chaîne de caractères source depuis laquelle tu veux extraire du texte. Ça peut être une valeur directe comme "ABC-12345-XYZ", une référence de cellule comme A1, ou même le résultat d'une autre fonction texte.
Exemples valides :
A1- référence une cellule contenant du texte"75001 Paris"- texte direct entre guillemetsCONCATENER(A1;"-";B1)- résultat d'une formule
no_départ
(obligatoire)La position du premier caractère à extraire. Excel commence à compter à 1 (pas 0 comme en programmation). Si tu veux extraire à partir du 5ème caractère, tu mets 5. Attention : les espaces comptent aussi !
Exemple visuel :
no_car
(obligatoire)Le nombre de caractères à extraire à partir de la position de départ. Si tu veux 5 caractères, tu mets 5. Si tu demandes plus de caractères qu'il n'en reste, Excel extrait simplement jusqu'à la fin sans erreur.
Cas particuliers :
- Si
no_car = 0, tu obtiens une chaîne vide "" - Si
no_cardépasse la longueur restante, pas d'erreur, juste moins de caractères - Tu peux utiliser
NBCAR(texte)pour calculer dynamiquement
Astuce pro : Combine CTXT avec TROUVE pour trouver automatiquement la position de départ. Par exemple, =CTXT(A1; TROUVE("-";A1)+1; 5) extrait 5 caractères juste après le premier tiret, peu importe où il se trouve.
Exemples pratiques pas à pas
Exemple 1 – Agent immobilier : extraire le code postal depuis une adresse complète
Tu es agent immobilier et tu as importé une base de données avec des adresses complètes. Tu dois extraire uniquement les codes postaux (5 chiffres) pour segmenter tes biens par zone géographique.
La formule trouve la virgule, ajoute 2 (pour sauter la virgule et l'espace), puis extrait 5 caractères.
| A | B | |
|---|---|---|
| 1 | Adresse complète | Code postal extrait |
| 2 | 15 rue de la Paix, 75001 Paris | 75001 |
| 3 | 8 avenue des Champs, 69002 Lyon | 69002 |
| 4 | 142 boulevard Haussmann, 75008 Paris | 75008 |
| 5 | 23 cours Mirabeau, 13100 Aix | 13100 |
=CTXT(A1; TROUVE(",";A1)+2; 5)En combinant CTXT avec TROUVE, tu automatises l'extraction même si les adresses ont des longueurs différentes. Le code postal commence toujours 2 caractères après la virgule.
Si tes adresses n'ont pas toujours le même format, tu peux utiliser TROUVE() pour localiser le début du code postal en cherchant le premier chiffre après une virgule ou un espace.
Exemple 2 – Responsable logistique : parser des références produit structurées
Tu es responsable logistique et tes références produit suivent un format strict : CAT-SOUSCATEGORIE-NUMERO. Tu dois extraire uniquement la sous-catégorie (les caractères entre les deux tirets) pour créer des rapports par famille de produits.
Commence à la position 5 (après 'ELC-'), et extrait jusqu'au second tiret.
| A | B | |
|---|---|---|
| 1 | Référence produit | Sous-catégorie |
| 2 | ELC-SMARTPHONE-1245 | SMARTPHONE |
| 3 | ELC-TABLETTE-8956 | TABLETTE |
| 4 | VET-CHEMISE-3421 | CHEMISE |
| 5 | ALI-CONSERVE-7788 | CONSERVE |
=CTXT(A1; 5; TROUVE("-";A1;5)-5)Cette formule est intelligente : elle commence à la position 5 (juste après le premier tiret et la catégorie), puis calcule combien de caractères extraire en trouvant la position du deuxième tiret et en soustrayant 5.
Exemple 3 – Technicien SAV : extraire l'année de fabrication depuis des numéros de série
Tu travailles au SAV d'un fabricant et les numéros de série contiennent l'année de fabrication aux positions 7 et 8. Tu dois extraire cette information pour identifier les produits sous garantie.
Extrait 4 caractères à partir de la position 8 pour obtenir l'année au format YYYY.
| A | B | C | |
|---|---|---|---|
| 1 | Numéro de série | Année fab. | Sous garantie ? |
| 2 | ABC123-2023-XY789 | 2023 | OUI |
| 3 | DEF456-2021-ZT456 | 2021 | NON |
| 4 | GHI789-2024-QW123 | 2024 | OUI |
| 5 | JKL012-2020-ER890 | 2020 | NON |
=CTXT(A1; 8; 4)Dans cet exemple, le format est fixe : l'année commence toujours à la position 8. Tu peux ensuite comparer cette année avec l'année actuelle pour calculer automatiquement si le produit est sous garantie.
Pour automatiser encore plus, combine avec SI(ANNEE(AUJOURDHUI())-CTXT(A1;8;4)<=2;"OUI";"NON") pour calculer directement si c'est sous garantie (exemple : garantie de 2 ans).
Exemple 4 – Comptable : extraire le code banque depuis un IBAN
Tu es comptable et tu dois analyser les paiements reçus en identifiant la banque d'origine. Dans un IBAN français, les 5 chiffres du code banque se trouvent aux positions 5 à 9. Tu veux automatiser cette extraction pour toute ta base de données.
SUBSTITUE enlève les espaces, puis CTXT extrait 5 caractères à partir de la position 5.
| A | B | C | |
|---|---|---|---|
| 1 | IBAN | Code banque | Banque |
| 2 | FR76 3000 4007 1234 5678 9012 345 | 30004 | BNP Paribas |
| 3 | FR14 2004 1010 1234 5678 9012 345 | 20041 | Société Générale |
| 4 | FR76 1027 8060 1234 5678 9012 345 | 10278 | Crédit Agricole |
| 5 | FR76 3000 2005 1234 5678 9012 345 | 30002 | BNP Paribas |
=CTXT(SUBSTITUE(A1;" ";""); 5; 5)Astuce importante : on utilise d'abord SUBSTITUE pour enlever tous les espaces de l'IBAN (qui sont là uniquement pour la lisibilité), puis on extrait le code banque aux positions 5-9 du format compact.
Tu peux créer une table de correspondance code banque → nom de banque, puis utiliser RECHERCHEV pour afficher automatiquement le nom de la banque à partir du code extrait.
Les erreurs fréquentes et comment les corriger
Erreur #VALEUR! - Position de départ incorrecte
Si tu obtiens #VALEUR!, c'est souvent parce que ton no_départ est inférieur à 1 ou que tu as passé du texte au lieu d'un nombre. Excel attend un nombre entier positif.
❌ Mauvais :
=CTXT("Bonjour"; 0; 3)✅ Correct :
=CTXT("Bonjour"; 1; 3)Solution : Vérifie que ton numéro de départ est au minimum 1. Si tu utilises une formule pour calculer la position, ajoute un contrôle avec MAX(1; ta_formule) pour garantir un minimum de 1.
Oubli des espaces dans le comptage
Les espaces comptent comme des caractères ! C'est l'erreur la plus fréquente. Si tu veux extraire "Paris" de "75001 Paris" et que tu commences à la position 6 au lieu de 7, tu auras " Paris" avec un espace au début.
Texte : "75001 Paris"
Solution : Compte soigneusement en incluant les espaces, ou utilise SUPPRESPACE(CTXT(...)) pour nettoyer les espaces indésirables avant ou après l'extraction.
Formule figée qui ne s'adapte pas aux variations
Si tu utilises des positions fixes (=CTXT(A1; 5; 3)) mais que tes données n'ont pas toujours le même format, tu obtiens des résultats incohérents ou incorrects.
Solution : Utilise des fonctions dynamiques comme TROUVE ou CHERCHE pour calculer automatiquement la position de départ. Par exemple : =CTXT(A1; TROUVE("-";A1)+1; 5) s'adaptera à toutes les variations.
Extraction au-delà de la longueur du texte
Si ta position de départ est supérieure à la longueur totale du texte, CTXT retourne une chaîne vide "" sans erreur. Ça peut être déroutant quand tu t'attends à un message d'erreur.
=CTXT("Bonjour"; 20; 5) → """Bonjour" n'a que 7 caractères, donc position 20 = chaîne vide
Solution : Utilise NBCAR(texte) pour vérifier la longueur avant d'extraire, ou ajoute un contrôle avec SI pour gérer ce cas : =SI(no_départ>NBCAR(texte); "Erreur"; CTXT(...)).
CTXT vs GAUCHE vs DROITE : Quelle fonction choisir ?
| Critère | CTXT | GAUCHE | DROITE |
|---|---|---|---|
| Position d'extraction | ✅ N'importe où | 📍 Début uniquement | 📍 Fin uniquement |
| Flexibilité | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Paramètres | 3 (texte, départ, nb) | 2 (texte, nb) | 2 (texte, nb) |
| Cas d'usage typique | Extraction milieu de chaîne | Code postal début : "75001..." | Extension fichier : "...xlsx" |
| Combine avec TROUVE | ✅ Très utile | ⚠️ Moins utile | ⚠️ Moins utile |
Utilise CTXT quand les données que tu veux sont au milieu du texte ou à une position variable. Utilise GAUCHE pour extraire depuis le début (codes, préfixes) et DROITE pour extraire depuis la fin (extensions, suffixes).
Astuces avancées pour devenir un pro de CTXT
1. Extraction entre deux délimiteurs
Pour extraire du texte entre deux caractères spécifiques (comme entre deux tirets ou deux virgules), combine CTXT avec deux TROUVE :
=CTXT(A1; TROUVE("-";A1)+1; TROUVE("-";A1;TROUVE("-";A1)+1)-TROUVE("-";A1)-1)Extrait tout ce qui est entre le premier et le deuxième tiret
2. Extraction dynamique jusqu'à la fin
Si tu veux extraire depuis une position jusqu'à la fin du texte (quelle que soit sa longueur), utilise un nombre très grand pour no_car :
=CTXT(A1; 10; 9999)Extrait tout depuis la position 10 jusqu'à la fin, quelle que soit la longueur
3. Nettoyage avant extraction
Combine CTXT avec SUBSTITUE ou SUPPRESPACE pour nettoyer les données avant extraction, surtout utile avec des imports externes :
=CTXT(SUPPRESPACE(SUBSTITUE(A1;" - ";"-")); 5; 3)Enlève les espaces superflus et normalise les tirets avant d'extraire
4. Gestion des erreurs avec SIERREUR
Protège tes formules CTXT contre les erreurs potentielles (texte trop court, délimiteur absent, etc.) avec SIERREUR :
=SIERREUR(CTXT(A1; TROUVE("-";A1)+1; 5); "Format invalide")Affiche "Format invalide" au lieu d'une erreur #VALEUR! si la formule échoue
Questions fréquentes
Quelle est la différence entre CTXT et GAUCHE ou DROITE ?
GAUCHE extrait depuis le début du texte, DROITE depuis la fin, et CTXT depuis n'importe quelle position que tu choisis. CTXT est plus flexible quand les données que tu veux sont au milieu d'une chaîne, comme un code postal dans une adresse complète.
Que se passe-t-il si je demande plus de caractères qu'il n'y en a ?
Excel extrait simplement tous les caractères disponibles jusqu'à la fin du texte, sans générer d'erreur. Par exemple, si tu as 10 caractères et que tu demandes 20, tu obtiens les 10 caractères restants.
CTXT compte-t-il les espaces comme des caractères ?
Oui, absolument ! Les espaces, la ponctuation et même les caractères spéciaux comptent. Si tu veux extraire "Code" de "Mon Code", tu dois commencer à la position 5 (après "Mon ").
Comment trouver automatiquement la position de départ ?
Combine CTXT avec TROUVE ou CHERCHE pour détecter automatiquement où commence le texte que tu cherches. Par exemple : =CTXT(A1; TROUVE("-";A1)+1; 5) extrait 5 caractères après le premier tiret.
CTXT fonctionne-t-il avec des chiffres ?
Oui, mais Excel traite les nombres comme du texte pour l'extraction. Pour extraire les 3 premiers chiffres de 123456, utilise =CTXT(A1; 1; 3). Assure-toi que ton nombre soit bien en format texte ou référence-le directement.
Les fonctions similaires à CTXT
Deviens un pro d'Excel
Tu maîtrises maintenant CTXT ! Rejoins Le Dojo Club pour découvrir toutes les fonctions de manipulation de texte et devenir vraiment efficace sur Excel.
Essayer pendant 30 jours