Extraire une chaîne de caractères délimitée 1


Voici une fonction VBA pour la manipulation de texte bien utile. Elle extrait une chaîne de caractères délimitée par deux autres chaînes.

Pour faire court: la fonction retournera le texte qui se trouve entre les deux textes adjacents que vous aurez spécifiés. Ainsi, si vous voulez extraire la chaîne "cde" de la chaîne originale "abcdef" – il suffit d'utiliser la fonction qui suit avec pour limites "b" et "f". Pour la chaîne originale "abbcdef", on obtiendra le même résultat ("cde") avec des limites "bb" et "f".

Cette fonction peut être très pratique lors d'un scraping de contenu d'un site internet, pour analyser des fichiers de log ou encore pour "nettoyer" des données.

Détails de la fonction pour extraire un texte délimité en VBA

  • Il est possible d'utiliser une seule limite (voir le tableau plus bas) ou même aucune – les deux limites sont des paramètres optionnels.
  • La fonction retourne une erreur dans le cas où une des limites n'est pas trouvé où dans les cas illogiques où la limite de début se trouve après la limite de fin.
  • La fonction est évidemment utilisable avec un texte qui contient des espaces (exemple: "Code produit: P001")

Utilisation dans une Feuille Excel en tant que UDF

Vous pouvez utiliser cette fonction à l'intérieur de votre code VBA mais également en tant que UDF (Fonction définie par l'utilisateur) dans vos Feuilles. Vous pourrez ainsi utiliser cette fonction avec le contenu des cellules.

Comment insérer une nouvelle fonction utilisateur?

  1. Ouvrez l'éditeur VBA (Alt+F11)
  2. Insérez un nouveau module (Menu: Insertion -> Module)
  3. Collez le code de la fonction dans le module
  4. Fermez al fenêtre de l'éditeur VBA et sauvegardez votre fichier Excel

Dans votre Feuille, l'utilisation ressemblera à ceci:

Excel: Extraire une chaîne délimiée

Le texte d'origine est contenu dans une cellule, les "délimiteurs" sont fixes dans la fonction

Excel: Extraire une chaîne délimiée

Le texte d'origine ainsi que les deux délimiteurs se trouvent dans les cellules

Comme vous voyez, rien de compliqué!

Le code VBA de la fonction qui extrait un texte délimité

Et voici donc le code VBA dont vous aurez besoin…

 

Selon vos besoins, vous pouvez modifier le comportement en cas d'erreur: la fonction retourne l'erreur "#N/A" (Error 2042) mais par une simple modification, elle peut retourner une chaîne vide (""). Il suffit d'échanger le commentaire dans les lignes suivantes:

Exemple d’utilisation de la fonction ExtraireChaineDelimitee()

Un exemple d'utilisation en pratique de la fonction ExtraireChaineDelimitee() pour que vous puissiez vous faire une idée.

Exemples de résultats:

  • ExtraireChaineDelimitee("abcdef", "ab", "ef")    ==> "cd"
  • ExtraireChaineDelimitee("abcdef", "", "ef")        ==> "abcd"
  • ExtraireChaineDelimitee("abcdef", , "ef")           ==> "abcd"
  • ExtraireChaineDelimitee("abcdef", "abc", "")     ==> "def"
  • ExtraireChaineDelimitee("abcdef", "ab")            ==> "cdef"
  • ExtraireChaineDelimitee("abcdef")                      ==> "abcdef"
  • ExtraireChaineDelimitee("abcdef", "bc", "xyz") ==> #N/A
  • ExtraireChaineDelimitee("abcdef", "ef", "ab")   ==> #N/A
  • ExtraireChaineDelimitee("abcdef", "cd", "cd")  ==> #N/A

Conclusion

Cette fonction, en plus d'être utile, démontre les possibilités des UDF (Fonctions définies par l'utilisateur). Si vous trouvez un cas intéressant de l'utilisation réel de cette fonction, n'hésitez pas à en faire part dans les commentaires…

Pour aller plus loin en VBA

Comme vous avez pu constater, le code VBA sur cette page utilise largement la fonction InStr(). En savoir plus sur la fonction VBA InStr.

 

 

9 0



Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

Commentaire sur “Extraire une chaîne de caractères délimitée