Recherche de la Nième occurrence d’un caractère (Microsoft Excel)
Barry cherche souvent à identifier la Nième occurrence d’un caractère dans une chaîne de texte. Il sait qu’il peut utiliser les fonctions de feuille de calcul RECHERCHE et TROUVER pour trouver une occurrence initiale, mais ne sait pas comment trouver, par exemple, la troisième occurrence de la lettre «B» dans une chaîne de texte.
En fait, la fonction SEARCH pourrait être utilisée pour trouver l’occurrence souhaitée, de la manière suivante:
=SEARCHB("b",G20,(SEARCHB("b",G20,(SEARCHB("b",G20,1)+1))+1))
Remarquez comment la fonction SEARCHB est utilisée de manière imbriquée. La formule spécifie ce qui est recherché (la lettre «b») et le nombre de niveaux d’imbrication indique l’occurrence dans la cellule que vous souhaitez rechercher. La formule renvoie la position du caractère souhaité dans la cellule.
Le problème avec une telle formule, bien sûr, est qu’elle est difficile à maintenir et peut rapidement devenir inutilisable si vous voulez trouver, par exemple, la septième occurrence.
Une formule plus flexible serait la suivante:
=FIND(CHAR(1),SUBSTITUTE(A1,"B",CHAR(1),3))
Cette formule examine la valeur en A1. Il remplace le code CHAR (1) pour la troisième occurrence de « B » dans la cellule. La fonction FIND recherche ensuite dans la chaîne résultante la position où CHAR (1) se produit.
Si l’occurrence souhaitée n’existe pas, la formule renvoie une erreur #VALUE.
Si vous préférez, vous pouvez créer une fonction définie par l’utilisateur qui recherchera la Nième position d’un caractère. Voici une macro très simple qui prend trois arguments: la chaîne à rechercher, le texte à rechercher et la position souhaitée.
Function FindN(sFindWhat As String, _ sInputString As String, N As Integer) As Integer Dim J As Integer Application.Volatile FindN = 0 For J = 1 To N FindN = InStr(FindN + 1, sInputString, sFindWhat) If FindN = 0 Then Exit For Next End Function
La fonction est sensible à la casse dans ce qu’elle recherche et elle renvoie la position dans la chaîne spécifiée à laquelle la valeur sFindWhat se produit. S’il n’y a pas d’occurrence à l’instance spécifiée, la fonction renvoie un 0. Ce qui suit montre comment la fonction peut être utilisée dans une feuille de calcul:
=FindN("b",C15,3)
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (3324) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Finding_the_Nth_Occurrence_of_a_Character [Recherche de la Nième occurrence d’un personnage]
.