Trouver la position de la dernière occurrence d'un caractère dans Excel

Dans ce didacticiel, vous apprendrez à trouver la position de la dernière occurrence d'un caractère dans une chaîne dans Excel.

Il y a quelques jours, un collègue a eu ce problème.

Il avait une liste d'URL comme indiqué ci-dessous, et il devait extraire tous les caractères après la dernière barre oblique ("/").

Ainsi, par exemple, à partir de https://example.com/archive/janvier il a dû extraire 'janvier'.

Cela aurait été vraiment facile s'il n'y avait eu qu'une seule barre oblique dans les URL.

Ce qu'il avait, c'était une énorme liste de milliers d'URL de longueur variable et un nombre variable de barres obliques.

Dans de tels cas, l'astuce consiste à trouver la position de la dernière occurrence de la barre oblique dans l'URL.

Dans ce tutoriel, je vais vous montrer deux manières de procéder :

  • Utiliser une formule Excel
  • Utilisation d'une fonction personnalisée (créée via VBA)

Obtenir la dernière position d'un caractère à l'aide d'une formule Excel

Lorsque vous avez la position de la dernière occurrence, vous pouvez simplement extraire tout ce qui se trouve à sa droite en utilisant la fonction RIGHT.

Voici la formule qui trouverait la dernière position d'une barre oblique et extrairait tout le texte à sa droite.

=DROITE(A2,LEN(A2)-TROUVER("@",REMPLACER(A2,"/","@",LEN(A2)-LEN(REMPLACER(A2,"/",""))),1 )) 

Comment fonctionne cette formule ?

Décomposons la formule et expliquons comment chaque partie fonctionne.

  • REMPLACER(A2,"/",“”) - Cette partie de la formule remplace la barre oblique par une chaîne vide. Ainsi, par exemple, si vous souhaitez rechercher l'occurrence d'une chaîne autre que la barre oblique, utilisez-la ici.
  • LEN(A2)-LEN(REMPLACER(A2,"/",“”)) - Cette partie vous dira combien de barres obliques il y a dans la chaîne. Il soustrait simplement la longueur de la chaîne sans la barre oblique de la longueur de la chaîne avec les barres obliques.
  • REMPLACER(A2,"/","@",LEN(A2)-LEN(REMPLACER(A2,"/",""))) - Cette partie de la formule remplacerait la dernière barre oblique par @. L'idée est de rendre ce personnage unique. Vous pouvez utiliser n'importe quel caractère que vous voulez. Assurez-vous simplement qu'il est unique et qu'il n'apparaît pas déjà dans la chaîne.
  • RECHERCHER(“@”,REMPLACER(A2,”/”,”@”,LEN(A2)-LEN(REMPLACER(A2,”/”,””))),1) - Cette partie de la formule vous donnerait la position de la dernière barre oblique.
  • LEN(A2)-TROUVER(“@”,REMPLACER(A2,”/”,”@”, LEN(A2)-LEN(REMPLACER(A2,”/”,””))),1) - Cette partie de la formule nous dirait combien de caractères il y a après la dernière barre oblique.
  • =DROITE(A2,LEN(A2)-TROUVEZ("@",REMPLACER(A2,"/","@",LEN(A2)-LEN(REMPLACER(A2,"/",""))),1 )) - Maintenant, cela nous donnerait simplement la chaîne après la dernière barre oblique.

Obtenir la dernière position d'un caractère à l'aide de la fonction personnalisée (VBA)

Bien que la formule ci-dessus soit excellente et fonctionne comme un charme, elle est un peu compliquée.

Si vous êtes à l'aise avec VBA, vous pouvez utiliser une fonction personnalisée (également appelée fonction définie par l'utilisateur) créée via VBA. Cela peut simplifier la formule et peut vous faire gagner du temps si vous devez le faire souvent.

Utilisons le même ensemble de données d'URL (comme indiqué ci-dessous) :

Pour ce cas, j'ai créé une fonction appelée LastPosition, qui trouve la dernière position du caractère spécifié (qui est une barre oblique dans ce cas).

Voici la formule qui fera cela :

=DROITE(A2,LEN(A2)-DernièrePosition(A2,"/")+1)

Vous pouvez voir que c'est beaucoup plus simple que celui que nous avons utilisé ci-dessus.

Voici comment cela fonctionne :

  • LastPosition - qui est notre fonction personnalisée - renvoie la position de la barre oblique. Cette fonction prend deux arguments - la référence de cellule qui a l'URL et le caractère dont nous devons trouver la position.
  • La fonction RIGHT nous donne alors tous les caractères après la barre oblique.

Voici le code VBA qui a créé cette fonction :

Function LastPosition(rCell As Range, rChar As String) 'Cette fonction donne la dernière position du caractère spécifié' Ce code a été développé par Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len(rCell) For i = rLen To 1 Step -1 If Mid(rCell, i - 1, 1) = rChar Then LastPosition = i Exit Function End If Next i End Function

Pour que cette fonction fonctionne, vous devez la placer dans l'éditeur VB. Une fois cela fait, vous pouvez utiliser cette fonction comme n'importe quelle autre fonction Excel normale.

Voici les étapes pour copier et coller ce code dans le back-end VB :

Voici les étapes pour placer ce code dans l'éditeur VB :

  1. Allez dans l'onglet Développeur.
  2. Cliquez sur l'option Visual Basic. Cela ouvrira l'éditeur VB dans le backend.
  3. Dans le volet Explorateur de projets de l'éditeur VB, cliquez avec le bouton droit sur n'importe quel objet du classeur dans lequel vous souhaitez insérer le code. Si vous ne voyez pas l'Explorateur de projets, accédez à l'onglet Affichage et cliquez sur Explorateur de projets.
  4. Allez dans Insérer et cliquez sur Module. Cela insérera un objet module pour votre classeur.
  5. Copiez et collez le code dans la fenêtre du module.

Désormais, la formule serait disponible dans toutes les feuilles de calcul du classeur.

Notez que vous devez enregistrer le classeur au format .XLSM car il contient une macro. De plus, si vous souhaitez que cette formule soit disponible dans tous les classeurs que vous utilisez, vous pouvez soit l'enregistrer dans le classeur de macros personnelles, soit créer un complément à partir de celui-ci.

Vous aimerez peut-être aussi les didacticiels Excel suivants :

  • Comment obtenir le nombre de mots dans Excel.
  • Comment utiliser RECHERCHEV avec plusieurs critères.
  • Recherchez la dernière occurrence d'une valeur de recherche dans une liste dans Excel.
  • Extraire la sous-chaîne dans Excel.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave