Manipuler du texte dans Excel est une tâche commune mais parfois complexe, surtout lorsqu'il s'agit de nettoyer et d'extraire des informations précises. La fonction VBA que je vous présente aujourd'hui simplifie ce processus en extrayant un mot spécifique d'une chaîne de caractères.
Cette fonction, qui vous permet d'obtenir le n-ème mot d'un texte, est conçue pour être utilisée par des débutants ou des utilisateurs intermédiaires et utilise intentionnellement la fonction SUPRESPACE d'Excel au lieu de la fonction VBA Trim pour éliminer les espaces multiples et garantir un nettoyage efficace du texte au départ. Sinon, les espaces excédentaires (au début, à la fin ou des espaces multiples au milieu du texte) pourraient biaiser la recherche du mot à une position exacte dans le texte. Cela prépare le texte pour une extraction précise, en s'assurant que la séparation des mots est basée sur un seul espace délimiteur, ce qui est essentiel pour obtenir des résultats fiables.
Extraire un mot spécifique en VBA: Comment cela marche?
La fonction ExtraireMot que je vous propose est simple à utiliser. Elle prend deux arguments : le numéro du mot à extraire (N
) et la chaîne de caractères (Texte
) de laquelle extraire le mot. Voici comment elle fonctionne étape par étape:
- Nettoyage du texte: La chaîne de caractères est d'abord passée à travers la fonction SUPRESPACE d'Excel, qui élimine les espaces inutiles.
- Extraction du mot: Ensuite, la fonction sépare la chaîne en mots en utilisant l'espace comme séparateur.
- Validation des entrées: Avant l'extraction, la fonction vérifie si le texte n'est pas vide et si le numéro du mot est valide.
- Gestion des erreurs: Si le numéro du mot est supérieur au nombre de mots disponibles, la fonction renvoie une erreur standard Excel "
#N/A
".
Le code VBA de la fonction – prêt à l'emploi
Et voici le code même de la fonction à copier et coller dans vos Projets VBA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Function ExtraireMot(N As Integer, Texte As String) As String ' par Excel-Malin.com ( https://excel-malin.com/ ) Dim Mots() As String Dim Resultat As String ' Nettoyage de la chaîne de caractères Texte = Application.WorksheetFunction.Trim(Texte) ' Sépare les mots basés sur l'espace Mots = Split(Texte, " ") ' Vérifie si les paramètres ne sont pas vides et si N est un nombre valide If Len(Texte) = 0 Or N < 1 Then ExtraireMot = "" Exit Function End If ' Vérifie si le numéro du mot demandé dépasse le nombre de mots dans la chaîne If N > UBound(Mots) + 1 Then ExtraireMot = "#N/A" ' Utilisation d'une erreur Exit Function Else Resultat = Mots(N - 1) End If ' Retourne le mot extrait ExtraireMot = Resultat End Function |
Exemple d'utilisation pratique – Extraire un mot d'une phrase
Maintenant, voici comment on peut utiliser cette fonction dans une macro VBA:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub ExempleUtilisationExtraireMot() ' par Excel-Malin.com ( https://excel-malin.com/ ) Dim ExempleTexte As String Dim MotExtrait As String ExempleTexte = "Excel-Malin est une ressource formidable pour apprendre VBA." ' Extrait le 3ème mot MotExtrait = ExtraireMot(3, ExempleTexte) ' Affiche le mot extrait dans une boîte de dialogue MsgBox MotExtrait End Sub |
Utilité de la fonction ExtraireMot en pratique
Cette fonction est extrêmement utile pour les utilisateurs qui travaillent régulièrement avec des données textuelles dans Excel. Que ce soit pour analyser des commentaires clients, des descriptions de produits ou tout autre texte, ExtraireMot offre une solution rapide et efficace pour obtenir l'information désirée. De plus, en tant que fonction définie par l'utilisateur (UDF), elle peut être intégrée directement dans Excel, permettant une utilisation facile et répétée dans vos Classeurs.
Pour aller plus loin en VBA…
Pour finir, je vous propose d'autres articles qui pourraient vous être utiles et qui vont sans doute rendre votre travail avec VBA plus efficace.
- Liste de toutes les fonctions VBA
- Glossaire VBA – l'explications des principaux termes que vous allez rencontrer dans VBA
- RECHERCHEV en VBA – oui, c'est possible!
- Comment utiliser "Select Case" en VBA
- Lancer des macros VBA avec un fichier batch (en lot)