TROUVE (FIND en anglais) est la fonction texte qui localise précisément un caractère ou un mot dans une chaîne et retourne sa position. Contrairement à sa cousine CHERCHE, elle est sensible à la casse, ce qui la rend indispensable pour valider des codes produits, parser des adresses email ou extraire des données structurées.
Concrètement, TROUVE te sert à extraire le domaine après le @ d'une adresse email, à isoler la catégorie avant le premier tiret d'une référence produit, à vérifier la présence d'une majuscule dans un mot de passe, ou à découper un identifiant géographique entre ses séparateurs.
Syntaxe de la fonction TROUVE
=TROUVE(texte_cherché; texte; [no_départ])Comprendre chaque paramètre de la fonction TROUVE
TROUVE attend ses arguments dans cet ordre : d'abord ce que tu cherches, ensuite la chaîne où chercher, et seulement à la fin la position de départ. Ce dernier, [no_départ], est le seul facultatif : sans lui, la recherche démarre au premier caractère, et tu n'y touches que pour aller pêcher une deuxième occurrence.
texte_cherché
: le texte ou caractère que tu cherchesÇa peut être un caractère simple comme "@", un mot comme "Excel", ou une référence de cellule. Attention : TROUVE est sensible à la casse, donc "Excel" et "excel" donneront des résultats différents.
Tu peux aussi utiliser les caractères joker ? (un seul caractère) et * (plusieurs caractères). Pour chercher littéralement un ? ou un *, fais-le précéder du tilde ~.
Astuce : TROUVE est sensible à la casse : si tu cherches "PDF" dans "document.pdf", TROUVE retournera #VALEUR! car "PDF" ne correspond pas à "pdf". Utilise CHERCHE si la casse n'a pas d'importance.
texte
: la chaîne de texte dans laquelle tu cherchesC'est généralement une référence de cellule comme A1, mais ça peut aussi être du texte direct entre guillemets comme "contact@example.com". TROUVE scanne ce texte de gauche à droite pour trouver la première occurrence de texte_cherché.
[no_départ]
: la position à partir de laquelle commencer la recherche(facultatif)Par défaut, TROUVE commence au premier caractère (position 1). Si tu mets 5, elle ignorera les 4 premiers caractères et commencera la recherche au 5ème.
C'est très utile pour trouver la deuxième ou troisième occurrence d'un caractère : trouve d'abord la première, puis cherche à nouveau à partir de cette position +1.
Astuce : TROUVE retourne toujours la position depuis le début du texte, pas depuis no_départ. Si le premier tiret est en position 5 et que tu cherches le deuxième à partir de la position 6, le résultat sera la position absolue du deuxième tiret (ex : 12), pas 7.
Pas envie d'écrire la formule TROUVE à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Support IT : extraire le domaine d'une adresse email
Tu travailles au support informatique et tu dois extraire automatiquement le domaine (après le @) de centaines d'adresses email pour créer un rapport par entreprise cliente. TROUVE localise le @ puis STXT extrait tout ce qui suit.
TROUVE("@";A2) retourne 13 (la position du @). On ajoute +1 pour commencer après le @, et STXT extrait les 100 caractères suivants (largement suffisant pour un domaine). La formule s'adapte automatiquement quelle que soit la longueur de la partie locale.
| A | B | C | |
|---|---|---|---|
| 1 | Position @ | Domaine | |
| 2 | marie.dupont@entreprise.fr | 13 | entreprise.fr |
| 3 | contact@startup-tech.com | 8 | startup-tech.com |
| 4 | admin@mon-site.org | 6 | mon-site.org |
| 5 | support@client-vip.net | 8 | client-vip.net |
=STXT(A2; TROUVE("@"; A2)+1; 100)TROUVE("@";A2) retourne 13 (la position du @). On ajoute +1 pour commencer après le @, et STXT extrait les 100 caractères suivants (largement suffisant pour un domaine). La formule s'adapte automatiquement quelle que soit la longueur de la partie locale.
E-commerce : parser des références produits structurées
Tu gères un catalogue e-commerce et tes références produits suivent le format CATEG-SOUSCATEG-ID. Tu dois extraire uniquement la catégorie principale avant le premier tiret pour générer des filtres automatiques.
TROUVE("-";A2) trouve la position du premier tiret (5 pour ELEC-...). GAUCHE(A2; 5-1) extrait alors les 4 premiers caractères. Quand la catégorie a une longueur variable (comme SPORT), la formule s'adapte automatiquement.
| A | B | C | |
|---|---|---|---|
| 1 | Référence produit | Position tiret | Catégorie |
| 2 | ELEC-PHONE-12345 | 5 | ELEC |
| 3 | MODE-HOMME-67890 | 5 | MODE |
| 4 | DECO-JARDIN-45678 | 5 | DECO |
| 5 | SPORT-FITNESS-23456 | 6 | SPORT |
=GAUCHE(A2; TROUVE("-"; A2)-1)TROUVE("-";A2) trouve la position du premier tiret (5 pour ELEC-...). GAUCHE(A2; 5-1) extrait alors les 4 premiers caractères. Quand la catégorie a une longueur variable (comme SPORT), la formule s'adapte automatiquement.
Astuce de pro : Pour extraire la sous-catégorie (entre le 1er et le 2ème tiret), utilise no_départ : =STXT(A1; TROUVE("-";A1)+1; TROUVE("-";A1;TROUVE("-";A1)+1)-TROUVE("-";A1)-1).
Responsable sécurité IT : vérifier la présence de majuscules
Tu es responsable sécurité IT et tu veux valider que les mots de passe créés par les utilisateurs contiennent au moins une lettre majuscule. TROUVE, sensible à la casse, est parfaite pour ça : elle cherche chaque majuscule dans la chaîne.
Cette formule utilise un tableau des 26 majuscules. TROUVE cherche chacune dans A2, SIERREUR transforme les erreurs (lettres non trouvées) en 0, et SOMME compte combien de majuscules sont présentes. Si le total est supérieur à 0, le mot de passe est valide.
| A | B | |
|---|---|---|
| 1 | Mot de passe | Validation majuscule |
| 2 | Azerty123! | ✅ Valide |
| 3 | azerty123! | ❌ Pas de majuscule |
| 4 | MOT2PASSE | ✅ Valide |
| 5 | motdepasse | ❌ Pas de majuscule |
=SI(SOMME(SIERREUR(1/TROUVE({"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";"Q";"R";"S";"T";"U";"V";"W";"X";"Y";"Z"}; A2); 0))>0; "✅ Valide"; "❌ Pas de majuscule")Cette formule utilise un tableau des 26 majuscules. TROUVE cherche chacune dans A2, SIERREUR transforme les erreurs (lettres non trouvées) en 0, et SOMME compte combien de majuscules sont présentes. Si le total est supérieur à 0, le mot de passe est valide.
Data analyst : extraire un code région entre deux séparateurs
Tu reçois des codes géographiques au format PAYS_REGION_VILLE. Tu dois extraire uniquement le code région, c'est-à-dire la chaîne entre le premier et le second underscore, pour faire des analyses régionales.
TROUVE("_";A2) trouve le 1er underscore (position 3 pour FR_IDF...). TROUVE("_";A2;4) trouve le 2ème underscore en cherchant à partir de la position 4. STXT extrait ensuite la portion comprise entre les deux positions. C'est la puissance de no_départ qui permet de naviguer dans une chaîne structurée.
| A | B | |
|---|---|---|
| 1 | Code géo | Région extraite |
| 2 | FR_IDF_PARIS | IDF |
| 3 | FR_ARA_LYON | ARA |
| 4 | FR_PACA_MARSEILLE | PACA |
| 5 | FR_NAQ_BORDEAUX | NAQ |
=STXT(A2; TROUVE("_"; A2)+1; TROUVE("_"; A2; TROUVE("_"; A2)+1) - TROUVE("_"; A2) - 1)TROUVE("_";A2) trouve le 1er underscore (position 3 pour FR_IDF...). TROUVE("_";A2;4) trouve le 2ème underscore en cherchant à partir de la position 4. STXT extrait ensuite la portion comprise entre les deux positions.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction TROUVE
Neuf fois sur dix, c'est #VALEUR! qui s'affiche, et le coupable est presque toujours la casse : TROUVE cherche "PDF" à la lettre et ne le voit pas dans "document.pdf". Les autres pièges viennent du no_départ (qui renvoie une position absolue, jamais relative) et des jokers ? et * interprétés au lieu d'être cherchés tels quels.
Erreur #VALEUR! – Texte cherché absent ou casse incorrecte
L'erreur la plus courante avec TROUVE : le texte cherché n'existe pas dans la chaîne, ou la casse ne correspond pas. Si tu cherches "Excel" dans "excel formation", TROUVE retournera #VALEUR! car le E majuscule n'est pas trouvé.
Solution : Enveloppe TROUVE dans SIERREUR pour gérer l'absence : =SIERREUR(TROUVE("@";A1); "Pas d'arobase"). Ou utilise CHERCHE si la casse n'a pas d'importance pour ton cas.
Confusion majuscule/minuscule entre TROUVE et CHERCHE
Beaucoup d'utilisateurs ne réalisent pas que TROUVE est sensible à la casse. Chercher "PDF" dans "document.pdf" retourne #VALEUR! car "PDF" ne correspond pas à "pdf".
Solution : Si la casse n'a pas d'importance, utilise CHERCHE. Sinon, normalise d'abord le texte : =TROUVE("PDF"; MAJUSCULE(A1)) trouvera "pdf", "PDF" ou "Pdf" indifféremment.
Mauvais calcul quand no_départ est utilisé
Quand tu utilises no_départ, TROUVE retourne toujours la position depuis le début du texte, pas depuis no_départ. C'est une source de confusion fréquente quand on calcule des décalages.
Solution : Vérifie ta logique. Si le premier tiret est en position 5 et que tu cherches le deuxième avec =TROUVE("-";A1;6), le résultat est la position absolue du deuxième tiret (ex : 12), pas 7.
Caractère joker interprété à la place d'un littéral
Si tu cherches littéralement un ? ou un *, TROUVE les interprète comme des caractères joker et le comportement est inattendu.
Solution : Fais précéder le caractère joker du tilde ~ : =TROUVE("~?";A1) cherche littéralement le caractère ?. Idem pour ~* pour chercher un astérisque.
TROUVE vs CHERCHE vs EXACT
Prends TROUVE quand la casse compte et que tu veux la position d'un caractère : codes produits, mots de passe, séparateurs à découper. Passe à CHERCHE dès que les majuscules t'indiffèrent ou que tu as besoin des jokers dans du texte libre. Et si tu ne cherches pas une position mais veux juste savoir si deux textes sont rigoureusement identiques, c'est EXACT qu'il te faut, pas TROUVE.
| Critère | TROUVE | CHERCHE | EXACT |
|---|---|---|---|
| Sensible à la casse | Oui | Non | Oui |
| Retourne une position | Oui (nombre) | Oui (nombre) | Non (VRAI/FAUX) |
| Cherche dans le texte | Oui | Oui | Non, compare tout |
| Argument no_départ | Oui | Oui | Non |
| Cas d'usage principal | Codes stricts, mots de passe | Recherche souple dans texte libre | Comparer deux textes complets |
Astuces avancées avec TROUVE
Trouver la dernière occurrence d'un caractère
TROUVE ne trouve que la première occurrence. Pour trouver la dernière (utile pour extraire l'extension d'un fichier par exemple), combines SUBSTITUE et CHERCHE : remplace le dernier . par un caractère rare (~), puis localise ce ~. La formule est : =CHERCHE("~";SUBSTITUE(A1;".";"~";NBCAR(A1)-NBCAR(SUBSTITUE(A1;".";"")))). NBCAR calcule combien de points sont présents, et SUBSTITUE remplace uniquement le dernier.
À partir de cette position, DROITE ou STXT extrait l'extension.
Tester la présence avant d'extraire
Avant d'utiliser TROUVE pour extraire, vérifie toujours que le caractère existe pour éviter #VALEUR! sur les lignes qui n'ont pas le format attendu : =SI(ESTERREUR(TROUVE("@";A1)); "Email invalide"; STXT(A1; TROUVE("@";A1)+1; 99)). Ton tableau reste propre même si certaines cellules ne respectent pas le format.
Cette vérification préalable est systématique dans les pipelines de nettoyage de données.
Compter les occurrences d'un caractère sans boucle
Pour compter combien de fois un caractère apparaît dans une cellule, utilise la formule NBCAR(A1)-NBCAR(SUBSTITUE(A1;"@";"")) : on soustrait la longueur sans le caractère de la longueur totale. Très utile pour valider qu'une adresse email contient exactement un arobase.
FAIRE cette vérification avant d'extraire avec TROUVE évite des résultats inattendus sur des données malformées.
Valider une casse précise avec TROUVE
Pour vérifier qu'un texte contient exactement "Excel" (pas "excel" ni "EXCEL"), utilise =NON(ESTERREUR(TROUVE("Excel";A1))) : retourne VRAI uniquement si la casse correspond. C'est la combinaison la plus simple pour une détection sensible à la casse sans formule matricielle.
Combine avec SI pour afficher un message de validation : =SI(NON(ESTERREUR(TROUVE("Excel";A1)));"Valide";"Casse incorrecte").
Questions fréquentes sur la fonction TROUVE
Quelle est la différence entre TROUVE et CHERCHE ?
TROUVE est sensible à la casse : elle fait la différence entre majuscules et minuscules (A diffère de a). CHERCHE, elle, ne fait pas cette distinction. Utilise TROUVE quand la casse est importante, par exemple pour valider des codes produits ou des mots de passe.
Que retourne TROUVE si le texte n'est pas trouvé ?
TROUVE retourne l'erreur #VALEUR! si le texte cherché n'existe pas dans la chaîne. Pour gérer cette erreur proprement, utilise SIERREUR : =SIERREUR(TROUVE("@";A1);"Non trouvé") affichera "Non trouvé" au lieu de l'erreur.
Comment trouver la deuxième occurrence d'un caractère avec TROUVE ?
Utilise le 3ème argument no_départ pour commencer la recherche après la première occurrence. Par exemple : =TROUVE("@";A1;TROUVE("@";A1)+1) trouve la position du deuxième @. Le premier TROUVE localise le premier @, puis on cherche à partir de cette position +1.
TROUVE fonctionne-t-elle avec des nombres ?
Oui. TROUVE peut chercher des chiffres dans du texte. Par exemple, =TROUVE("3";"Produit 2023") retourne 11, la position du premier 3 trouvé. Excel convertit automatiquement le nombre cherché en texte pour la comparaison.
Peut-on utiliser TROUVE pour chercher plusieurs caractères alternatifs ?
Pas directement. TROUVE cherche une séquence exacte. Pour trouver soit "A" soit "B" (le premier des deux trouvé), fais deux TROUVE séparés et prends le minimum : =MIN(SIERREUR(TROUVE("A";A1);999);SIERREUR(TROUVE("B";A1);999)). Le 999 évite que les erreurs faussent le MIN.
Pour aller plus loin
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

