=CHERCHE("apple";A2) renvoie la position à laquelle apple commence dans A2, en comptant à partir de 1, sans tenir compte des majuscules et des minuscules. =TROUVE("apple";A2) fait la même chose mais ne trouve que la casse exacte. Quand le texte est absent, les deux renvoient #VALEUR! (#VALUE! en anglais ; le tableau affiche les noms d'erreur anglais). Dans un Excel anglais, ces fonctions s'appellent SEARCH et FIND ; le tableau affiche les formules sous cette forme anglaise, avec des virgules, mais vous pouvez aussi les taper comme dans un Excel français, avec des points-virgules : =CHERCHE("apple";A2).
| A | B | C | |
|---|---|---|---|
| 1 | Text | FIND("apple") | SEARCH("apple") |
| 2 | Apple pie | #VALUE! | 1 |
| 3 | Green apple | 7 | 7 |
| 4 | Banana bread | #VALUE! | #VALUE! |
#VALUE! Un argument n’a pas le bon type, par exemple du texte à la place d’un nombre.Dans Excel en français : =TROUVE("apple";A2)Apple pie commence par un A majuscule, donc TROUVE ne trouve rien et renvoie #VALEUR!, tandis que CHERCHE renvoie 1. Dans Green apple, les deux renvoient 7 : l'espace compte comme un caractère. Banana bread ne contient pas du tout apple.
Syntaxe
=FIND(find_text, within_text, [start_num])
=SEARCH(find_text, within_text, [start_num])
find_text(texte_cherché) : ce que vous cherchez. Un caractère ou un mot.within_text(texte) : la cellule dans laquelle chercher.start_num(no_départ) : la position de départ, 1 s'il est omis. Le résultat compte toujours à partir du premier caractère de la cellule.
Si la cellule contient un texte
La position elle-même est rarement ce que vous voulez. En général, la question est "cette cellule contient-elle le mot ?". Une position est un nombre et un échec est une erreur, donc ESTNUM transforme le résultat en VRAI ou FAUX :
| A | B | C | |
|---|---|---|---|
| 1 | Note | Contains "late" | Status |
| 2 | Arrived late | TRUE | Check |
| 3 | On time | FALSE | OK |
| 4 | LATE by 2 days | TRUE | Check |
| 5 | Delivered | FALSE | OK |
=ESTNUM(CHERCHE("late";A2))CHERCHE trouve LATE en A4 parce qu'elle ignore la casse. Notez qu'elle trouverait aussi latest ou chocolate : CHERCHE cherche des caractères, pas des mots entiers. Chercher " late" avec une espace devant restreint un peu les résultats. Pour compter les cellules qui contiennent un mot, =NB.SI(A2:A5;"*late*") est plus court ; voir compter les cellules contenant du texte.
| A | B | |
|---|---|---|
| 1 | Subject | Urgent? |
| 2 | URGENT: server down | |
| 3 | Monthly report | |
| 4 | Refund request, urgent |
À vous : En B2, renvoyez VRAI si l'objet en A2 contient le mot urgent, quelle que soit la casse, et FAUX sinon. La formule est recopiée jusqu'en B4.
Trouver la deuxième occurrence
start_num permet de commencer à chercher après la première correspondance. Placez un TROUVE dans un autre : celui de l'intérieur trouve le premier tiret, et celui de l'extérieur commence un caractère plus loin.
| A | B | C | |
|---|---|---|---|
| 1 | Code | First dash | Second dash |
| 2 | NYC-2041-B | 4 | 9 |
| 3 | BOSTON-15-AA | 7 | 10 |
=TROUVE("-";A2;TROUVE("-";A2)+1)Avec les deux positions, STXT peut prendre ce qui se trouve entre les tirets : =STXT(A2;B2+1;C2-B2-1) renvoie 2041.
| A | B | |
|---|---|---|
| 1 | Position | |
| 2 | ana@coddy.tech |
À vous : En B2, renvoyez la position du @ dans l'adresse e-mail.
TROUVE et CHERCHE renvoient #VALEUR!
Ici, #VALEUR! veut seulement dire "introuvable". Remplacez-le par quelque chose d'utile :
| A | B | |
|---|---|---|
| 1 | Position of @ | |
| 2 | ana@coddy.tech | 4 |
| 3 | not an email | 0 |
=SIERREUR(TROUVE("@";A2);0)Ne comparez pas le résultat brut à un nombre, comme dans =TROUVE("@";A2)>0 : un échec est une erreur, et la comparaison renvoie #VALEUR! au lieu de FAUX. Testez-le avec ESTNUM, comme dans la section ci-dessus.
Caractères génériques : seulement avec CHERCHE
CHERCHE accepte les caractères génériques ? (un caractère quelconque) et * (une suite quelconque de caractères). TROUVE les traite comme des caractères ordinaires. Dans Excel :
=SEARCH("b?d","a bad day") returns 3
=SEARCH("2*B","NYC-2041-B") returns 5
=SEARCH("~?","Why?") returns 4, the tilde means a real question mark
=FIND("?","Why?") returns 4, FIND has no wildcards
Dans un Excel français, la première s'écrit =CHERCHE("b?d";"a bad day"). Pour en savoir plus sur *, ? et ~ dans les fonctions Excel, voir la page sur les caractères génériques.
TROUVE, CHERCHE ou Ctrl+F
| TROUVE | CHERCHE | Ctrl+F | |
|---|---|---|---|
| Casse | Doit correspondre | Ignorée | Ignorée, sauf si Respecter la casse est coché |
| Caractères génériques | Non | ?, *, ~ | ?, *, ~ |
| Introuvable | #VALEUR! | #VALEUR! | Un message |
| Résultat | Une position, recalculée | Une position, recalculée | Sélectionne la cellule |
Pour localiser une valeur une seule fois, Accueil > Rechercher et sélectionner > Rechercher (Ctrl+F, Cmd+F sur un Mac) est plus rapide qu'une formule. Pour signaler ou extraire sur chaque ligne, avec une mise à jour automatique, utilisez TROUVE ou CHERCHE. Choisissez TROUVE quand la casse a un sens (des codes produits comme ab et AB), CHERCHE pour tout ce que des gens tapent.
Questions fréquentes
Quelle est la différence entre TROUVE et CHERCHE dans Excel ?
TROUVE respecte la casse et n'accepte pas les caractères génériques. CHERCHE ignore la casse et accepte ? et *. =TROUVE("a";"Apple") donne #VALEUR!, tandis que =CHERCHE("a";"Apple") donne 1.
Comment extraire le texte entre deux tirets dans Excel ?
Trouvez les deux tirets et prenez ce qui se trouve entre eux avec STXT : =STXT(A2;TROUVE("-";A2)+1;TROUVE("-";A2;TROUVE("-";A2)+1)-TROUVE("-";A2)-1) renvoie 2041 à partir de NYC-2041-B. Dans Microsoft 365, =TEXTE.AVANT(TEXTE.APRES(A2;"-");"-") est plus court.
Pourquoi TROUVE renvoie-t-elle #VALEUR! ?
Le texte n'est pas dans la cellule, ou il y est avec d'autres majuscules (TROUVE respecte la casse). Entourez-la pour renvoyer autre chose : =SIERREUR(TROUVE("-";A2);0).
Comment trouver la deuxième occurrence d'un caractère ?
Commencez la recherche un caractère après la première correspondance : =TROUVE("-";A2;TROUVE("-";A2)+1). Le troisième argument est la position de départ.