Qu'est-ce que la fonction TROUVE ?
TROUVE (FIND en anglais) te sert quand tu dois localiser un repère avant de découper ou de contrôler un texte, et que la casse doit être respectée à la lettre : un mot de passe, un code strict, un format imposé. Elle ne renvoie pas le morceau de texte lui-même, seulement sa position, à combiner ensuite avec GAUCHE, DROITE ou STXT.
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
=TROUVE(texte_cherché; texte; [no_départ])Clique sur un argument pour aller à son explication.

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 ~.
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.

Exemples pratiques pas à pas
Comment trouver la position d'un caractère dans un texte avec la fonction TROUVE
Un export de l'annuaire interne arrive avec les adresses email en vrac et tu dois séparer les comptes internes des comptes externes, ce qui suppose de savoir où commence le domaine dans chaque adresse. La colonne Email contient m.dupont@dojo.fr, k.benali@dojo.fr et une centaine d'autres, et l'objectif est de repérer le @ de chacune sans les compter à la main.
C'est le travail de TROUVE : elle cherche un texte à l'intérieur d'un autre et renvoie sa position, ici 9 parce que le @ est le 9e caractère. Elle compare à la lettre près, majuscules comprises, et prend les jokers au pied de la lettre.
- 1Dans une cellule, écris
=TROUVE(. - 2En 1er argument : saisis le caractère à repérer,
"@". Les guillemets sont obligatoires pour que TROUVE le lise comme un texte à chercher. La casse compte, donc"a"et"A"seraient deux recherches distinctes, et les jokers?et*sont pris tels quels au lieu de remplacer des caractères. - 3En 2ᵉ argument : clique sur la cellule à parcourir,
D2. TROUVE litm.dupont@dojo.frde gauche à droite, s'arrête au premier@et renvoie9. Si le caractère cherché est absent, elle renvoie une erreur plutôt qu'un zéro. - 4Ferme la parenthèse et appuie sur Entrée.
=TROUVE("@";D2)9 : dans m.dupont@dojo.fr, le @ occupe la 9e place. TROUVE ne renvoie jamais un morceau de texte, seulement un numéro de position, que tu réutilises ensuite dans GAUCHE, DROITE ou STXT pour découper.Comment extraire le début d'une référence avant un tiret avec GAUCHE et la fonction TROUVE
Le catalogue empile des références au format CATEG-SOUSCATEG-ID et les filtres de la boutique ne peuvent pas être générés tant que la catégorie principale reste collée au reste du code. Les catégories n'ont pas toutes la même longueur : ELEC en compte quatre, SPORT en compte cinq, donc couper à un nombre fixe de caractères abîmerait une ligne sur deux.
TROUVE donne la position du premier tiret et GAUCHE s'arrête juste avant. La longueur du découpage devient calculée par la formule au lieu d'être écrite en dur.
- 1Dans une cellule, écris
=GAUCHE(. - 2En 1er argument : clique sur la référence à découper,
A2, qui contientELEC-PHONE-12345. GAUCHE renvoie ses tout premiers caractères, et c'est le second argument qui décide combien. - 3En 2ᵉ argument : écris le nombre de caractères à garder,
TROUVE("-";A2)-1. Le TROUVE y repère le premier tiret et renvoie5, puis le-1retire ce tiret du découpage, sinon tu récupéreraisELEC-avec le séparateur collé au bout. - 4Ferme la parenthèse et appuie sur Entrée.
=GAUCHE(A2;TROUVE("-";A2)-1)TROUVE("-";A2) renvoie 5, la place du premier tiret. On retire 1 pour s'arrêter juste avant, et GAUCHE garde les 4 premiers caractères, soit ELEC. Comme la position est recalculée sur chaque ligne, SPORT et ses 5 lettres sortent aussi bien que ELEC.Comment isoler un texte entre deux séparateurs avec l'argument no_départ de la fonction TROUVE
Les codes géographiques arrivent au format PAYS_REGION_VILLE et l'analyse par région ne peut pas démarrer tant que le code région reste noyé au milieu de la chaîne. Il faut la portion située entre le premier et le second underscore, sachant que IDF et PACA n'ont pas la même longueur et que les noms de villes non plus.
Deux TROUVE suffisent : le premier situe l'underscore d'ouverture, le second redémarre après lui grâce à no_départ pour situer celui de fermeture. STXT découpe entre les deux positions.
- 1Dans une cellule, écris
=STXT(. - 2En 1er argument : clique sur la cellule à découper,
A2, qui contientFR_IDF_PARIS. STXT en extrait une portion, à condition qu'on lui donne ensuite où commencer et combien de caractères prendre. - 3En 2ᵉ argument : écris la position de départ,
TROUVE("_";A2)+1. Le TROUVE renvoie3, la place du premier underscore, et le+1fait démarrer l'extraction juste après lui, sur le premier caractère de la région. - 4En 3ᵉ argument : écris le nombre de caractères à extraire,
TROUVE("_";A2;TROUVE("_";A2)+1)-TROUVE("_";A2)-1. Le premier TROUVE repart de la position4et trouve l'underscore de fermeture en7, une position toujours comptée depuis le début de la chaîne. Le calcul7 - 3 - 1laisse les3lettres deIDFentre les deux séparateurs. - 5Ferme la parenthèse et appuie sur Entrée.
=STXT(A2;TROUVE("_";A2)+1;TROUVE("_";A2;TROUVE("_";A2)+1)-TROUVE("_";A2)-1)3, la place de l'underscore d'ouverture. Le second repart de la position 4 et renvoie 7, celle de l'underscore de fermeture. Le calcul 7 - 3 - 1 donne 3 caractères à extraire à partir de la position 4, soit IDF.Comment contrôler la casse exacte d'une saisie avec la fonction TROUVE
L'outil d'import n'accepte les codes que si leur préfixe est écrit REF en majuscules, et le fichier reçu du fournisseur contient des ref et des Ref qui feront échouer le chargement complet. Il faut repérer les lignes fautives avant l'envoi, sur plusieurs milliers de codes que personne ne relira un par un.
C'est là que TROUVE se distingue : elle est sensible à la casse, donc ref et Ref ne correspondent pas à "REF" et déclenchent une erreur, que SI transforme en À corriger. Si tu veux au contraire ignorer la casse ou utiliser les jokers ? et * dans ta recherche, c'est CHERCHE qu'il faut appeler : c'est la seule vraie différence entre les deux fonctions.
- 1Dans une cellule, écris
=SI(. - 2En 1er argument : écris le test qui vérifie le préfixe,
ESTNUM(TROUVE("REF";A2)). TROUVE chercheREFen majuscules dansA2et renvoie une position quand il y est, une erreur sinon, tandis qu'ESTNUM traduit cette réponse enVRAIouFAUX. Comme TROUVE compare à la casse, ni le préfixe deref-2026-002ni celui deRef-2026-004ne passent le test. - 3En 2ᵉ argument : écris la mention à afficher quand le test est vrai,
"Conforme". Les guillemets sont obligatoires pour que SI renvoie ce mot tel quel. - 4En 3ᵉ argument : écris la mention affichée dans le cas contraire,
"À corriger". C'est elle qui signale les lignes dont le préfixe n'est pas en majuscules, celles que TROUVE fait échouer. - 5Ferme la parenthèse et appuie sur Entrée.
=SI(ESTNUM(TROUVE("REF";A2));"Conforme";"À corriger")TROUVE("REF";A2) renvoie 1 sur REF-2026-001 et une erreur sur ref-2026-002, parce que le préfixe en minuscules ne correspond pas au texte cherché. ESTNUM traduit ça en VRAI ou FAUX, et SI affiche le verdict à la place du code d'erreur.
Les 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
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.
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.
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.
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.
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
Continue sur ta lancée après la fonction TROUVE : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir




