Numéro d'article: 463924 - Dernière mise à jour: mardi 23 août 2005 - Version: 1.3 Position dernière occurrence d'une chaîne dans une autreAncien nº de publication de cet article : F13924 SymptômesJe souhaite calculer la position de la dernière occurrence d'un texte dans une chaîne de texte. Comment dois-je procéder ? RésolutionIl 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érencesPour plus de renseignements veuillez vous référer à : - L'aide en ligne de Microsoft Excel, aux rubriques des fonctions susmentionnées. Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT. |


Retour au début
