Recherche du premier non-chiffre dans une valeur de texte (Microsoft Excel)
Tony a un tas de données dans une feuille de calcul qui se compose de chiffres et d’autres caractères. Par exemple, il peut avoir une cellule contenant «1234567Blue». Tony veut être en mesure de déterminer la position du caractère à laquelle le premier caractère non numérique apparaît. Dans l’exemple du texte « 1234567Blue », Tony veut un moyen de comprendre que le premier caractère non numérique est en position 8.
Il existe deux méthodes principales pour obtenir la valeur souhaitée. La première consiste à utiliser une formule matricielle pour calculer la position. La formule matricielle suivante (entrée en utilisant Ctrl + Maj + Entrée) fonctionnera dans la majorité des cas:
=MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)
Les seules instances où cette formule matricielle ne fonctionnera pas sont si la cellule A1 est vide ou contient une valeur strictement numérique. Si votre liste peut contenir ce type de données (ou aucune donnée du tout), vous devriez envisager d’utiliser une formule matricielle légèrement plus longue:
=IF(LEN(A1)=0,0,MIN(IF(1ISNUMBER(1MID(A1,ROW(INDIRECT("A1:A"& LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))* (ISNUMBER(A1)=FALSE)
N’oubliez pas qu’il s’agit d’une formule matricielle unique, entrée en utilisant Ctrl + Maj + Entrée. Il gérera correctement les instances où A1 ne contient aucun caractère non numérique (comme dans une cellule vide ou une valeur telle que «123»).
Une autre formule matricielle possible qui devrait renvoyer la position souhaitée est la suivante. Celui-ci devrait gérer les cellules vides et les valeurs strictement numériques très bien, mais il est plus court que la formule matricielle présentée précédemment:
=IFERROR(MATCH(1,ISERR(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)1)1,),)
Bien sûr, l’autre façon de gérer la recherche de la position du premier caractère non numérique est de créer une fonction définie par l’utilisateur. Une telle macro peut être implémentée de différentes manières. L’un des moyens les plus simples d’implémenter la macro consiste simplement à parcourir chaque caractère de tout ce qui est passé à la macro. Lorsqu’un caractère est trouvé en dehors de la plage de codes ASCII pour les chiffres (48 à 57), vous savez que vous avez trouvé la première position. La macro suivante montre un moyen de faire ce type de technique:
Function FirstNonDigit(str As String) Dim iChar As Integer Dim iPos As Integer Dim J As Integer Application.Volatile iPos = 0 For J = 1 To Len(str) iChar = Asc(Mid(str, J, 1)) If iChar <= 47 Or iChar >= 58 Then iPos = J Exit For End If Next J FirstNonDigit = iPos End Function
Pour utiliser la fonction, utilisez simplement une formule comme celle-ci dans votre feuille de calcul:
=FirstNonDigit(A1)
Si la cellule que vous référencez est vide ou si elle ne contient que des chiffres, la fonction renvoie une valeur 0.
_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 (10610) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Finding_the_First_Non-Digit_in_a_Text_Value [Recherche du premier non-chiffre dans une valeur de texte]
.