Position dernière occurrence d'une chaîne dans une autre

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

Symptômes


Je souhaite calculer la position de la dernière occurrence d'un texte
dans une chaîne de texte.

Comment dois-je procéder ?


Résolution


Il suffit d'écrire la formule suivante (à valider en technique
matricielle, c'est à dire en appuyant simultanément sur les 3 touches
CTRL+MAJ+ENTREE).

=MAX(SI(ESTERREUR(CHERCHE(texte_cherché;texte;LIGNE(DECALER(INDIRECT("A1"
)
;;;NBCAR(texte)))));0;CHERCHE(texte_cherché;texte;LIGNE(DECALER(INDIRECT(
"
A1");;;NBCAR(texte))))))

où :
- texte_cherché : texte que vous recherchez.
- texte : texte dans lequel s'effectue la recherche.


EXEMPLE :

Cherchons à extraire le nom d'un fichier dans son chemin d'accès complet,
en se basant sur la dernière position du caractère "\" (sous Windows).

Soient :
- texte contient : "C:\DOCUMENT\EXEMPLES\TEST.XLS" (sans les guillemets)
- texte_cherché : "\" (sans les guillemets)

La formule citée précédemment revoie la valeur 21, qui est bien la
dernière occurrence du caractère "\" dans la chaîne de texte
"C:\DOCUMENT\EXEMPLES\TEST.XLS".

Pour extraire le nom du fichier, il suffit de compléter la fonction avec
la fonction STXT comme ci-dessous :

=STXT(texte;MAX(SI(ESTERREUR(CHERCHE(texte_cherché;texte;LIGNE(DECALER(IN
D
IRECT("A1");;;NBCAR(texte)))));0;CHERCHE(texte_cherché;texte;LIGNE(DECALE
R
(INDIRECT("A1");;;NBCAR(texte))))))+NBCAR(texte_cherché);NBCAR(texte))


REMARQUES :

1. Cette formule renvoie 0 si texte_cherché n'est pas dans texte.
2. Ces formules sont à valider en technique matricielle, c'est à dire en
appuyant simultanément sur les 3 touches CTRL+MAJ+ENTREE.


INFORMATIONS COMPLEMENTAIRES :

La formule repose sur les principes suivants :
- La fonction CHERCHE renvoie le numéro du caractère au niveau duquel un
caractère spécifique ou une chaîne de texte est initialement
reconnu(e) lors d'une lecture de gauche à droite.
- Ainsi, la dernière occurrence d'un texte sera celle dont le numéro
sera le plus grand. CHERCHE renvoie la position de la première
occurrence trouvée à partir du caractère de départ. Il faut faire
varier ce numéro de caractère sur le nombre de caractères possibles de
la chaîne (soit NBCAR).
- Pour obtenir une matrice de chiffres de 1 au nombre de caractères de
texte, nous utilisons:
LIGNE(DECALER(INDIRECT("A1");;;NBCAR(texte)))
- Si texte_cherché n'est pas trouvé, la fonction CHERCHE renvoie
#VALEUR, c'est pourquoi nous sommes obligés de tester son retour avec
ESTERREUR et de renvoyer 0 dans ce cas.
- La fonction MAX nous renvoie alors la dernière occurrence de
texte_cherché dans texte.


Références


Pour plus de renseignements veuillez vous référer à :

- L'aide en ligne de Microsoft Excel, aux rubriques des fonctions
susmentionnées.
Propriétés

ID d'article : 463924 - Dernière mise à jour : 23 août 2005 - Révision : 1

Commentaires