Fonctions VBA Chaînes et Sous-Chaînes
In this Article
VBA dispose de nombreuses fonctions de chaîne de caractères qui vous permettront de manipuler et de travailler avec du texte et des chaînes de caractères dans votre code. Dans ce tutoriel, nous allons aborder les fonctions qui vous permettront d’extraire les sous-chaînes des chaînes, de supprimer les espaces des chaînes, de convertir la casse d’un texte ou d’une chaîne, de comparer des chaînes et d’autres fonctions utiles.
Extraction d’une Sous-Chaîne de Texte
La Fonction VBA Left
La fonction VBA Left permet d’extraire une sous-chaîne d’un texte ou d’une chaîne de texte en commençant par le côté gauche. La syntaxe de la fonction Left de VBA est la suivante :
Left(Chaine, Nombre_de_Charactères) où :
- Chaîne – Le texte original.
- Nombre_de_caractères – Un nombre entier qui spécifie le nombre de caractères à extraire du texte original en commençant par la début.
Le code suivant montre comment utiliser la fonction Left pour extraire les quatre premiers caractères de la chaîne de texte donnée :
Sub UtilisationDeLaFonctionLeft()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "AutomateExcel"
valeurDeux = Left(valeurUn, 4)
MsgBox valeurDeux
End Sub
Le résultat est le suivant :
La fonction Left a extrait les quatre premières lettres de la chaîne : AutomateExcel, ce qui correspond à la sous-chaîne : Auto.
La Fonction VBA Right
La fonction VBA Right permet d’extraire une sous-chaîne d’un texte ou d’une chaîne de texte en commençant par le côté droit. La syntaxe de la fonction VBA Right String est la suivante :
Right(Chaine, Nombre_de_Charactères) où :
- Chaine – Le texte original.
- Nombre_de_Charactères – Un nombre entier qui spécifie le nombre de caractères à extraire du texte original à partir de la fin.
Le code suivant montre comment utiliser la fonction Right pour extraire les quatre derniers caractères de la chaîne de texte donnée :
Sub UtilisationDeLaFonctionRight()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "AutomateExcel"
valeurDeux = Right(valeurUn, 4)
MsgBox valeurDeux
End Sub
Le résultat est le suivant :
La fonction Right a extrait les quatre dernières lettres de AutomateExcel, ce qui correspont à la sous-chaîne : xcel.
La Fonction VBA Mid
La fonction VBA Mid permet d’extraire une sous-chaîne d’un texte ou d’une chaîne de caractères, à partir de n’importe quelle position spécifiée dans la chaîne. La syntaxe de la fonction VBA Mid String est la suivante :
Mid(Chaîne, Position_de_Départ, [Nombre_de_Charactères ]) où :
- Chaîne – Le texte original.
- Position_de_Départ – La position dans le texte original, où la fonction commencera à extraire.
- Nombre_de_Charactères (facultatif) – Un nombre entier qui spécifie le nombre de caractères à extraire du texte d’origine à partir de la position de départ. S’il est vide, la fonction MID renvoie tous les caractères à partir de la position de départ.
Le code suivant vous montre comment utiliser la fonction Mid String pour extraire quatre caractères, en commençant par la deuxième position ou le deuxième caractère de la chaîne :
Sub UtilisationDeLaFonctionMid()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "AutomateExcel"
valeurDeux = Mid(valeurUn, 2, 4)
MsgBox valeurDeux
End Sub
Le résultat est envoyé dans une msgbox:
La fonction Mid a extrait quatre lettres de la chaîne AutomateExcel à partir du deuxième caractère/position/lettre ce qui correspond à la sous-chaîne : utom.
Recherche de la Position d’une Sous-Chaîne
La Fonction VBA Instr
La fonction VBA Instr renvoie la position de départ d’une sous-chaîne dans une autre chaîne. Cette fonction est sensible à la casse. La syntaxe de la fonction VBA Instr est la suivante :
Instr([Départ], Chaîne, Sous-Chaine, [Comparaison]) où :
- Départ (Facultatif) – Indique la position de départ de la recherche de la fonction. Si elle est vide, la valeur par défaut 1 est utilisée.
- Chaîne – Le texte original.
- Sous-Chaîne – La sous-chaîne du texte d’origine dont vous voulez trouver la position.
- Comparaison (facultatif) – Indique le type de comparaison à effectuer. Si laissé vide, la comparaison binaire est utilisée.
-vbBinaryCompare – Comparaison binaire (les majuscules et les minuscules sont considérées comme différentes)
-vbTextCompare – Comparaison de textes (les majuscules et les minuscules sont considérées comme identiques)
-vbDatabaseCompare – Comparaison de bases de données (Cette option n’est utilisée que dans Microsoft Access, et est une comparaison basée sur la base de données)
Le code suivant montre comment utiliser la fonction Instr pour déterminer la première occurrence de la sous-chaîne « le » dans la chaîne principale :
Sub UtilisationDeLaFonctionInstr()
Dim valeurUn As String
Dim positionSousChaine As Integer
valeurUn = "C'est le texte original dans lequel on cherche"
positionSousChaine = InStr(1, valeurUn, "le")
Debug.Print positionSousChaine
End Sub
Le résultat (affiché dans la fenêtre d’exécution) est le suivant :
La fonction Instr a renvoyé la position de la première occurrence de la sous-chaîne « le » qui est 7. Notez que cette fonction inclut les espaces lorsqu’elle compte des caractères.
La Fonction VBA InstrRev
La fonction VBA InstrRev renvoie la position de départ d’une sous-chaîne dans une autre chaîne, mais elle commence à compter sa position à partir de la fin de la chaîne. Cette fonction est sensible à la casse. La syntaxe de la fonction VBA InstrRev est la suivante :
InstrRev(Chaîne, Sous-chaîne, [Départ], [Comparaison]) où :
- Chaîne – Le texte d’origine.
- Sous-chaîne – La sous-chaîne du texte d’origine dont vous voulez trouver la position.
- Départ (facultatif) – Indique la position à partir de laquelle la recherche doit commencer. Si laissé vide, la fonction commence la recherche à partir du dernier caractère.
- Comparaison (Facultatif) – Indique le type de comparaison à effectuer. S’il est vide, la comparaison binaire est utilisée.
-vbBinaryCompare – Comparaison binaire (les majuscules et les minuscules sont considérées comme différentes)
-vbTextCompare – Comparaison de textes (les majuscules et les minuscules sont considérées comme identiques)
-vbDatabaseCompare – Comparaison de bases de données (Cette option n’est utilisée que dans Microsoft Access, et est une comparaison basée sur la base de données)
Le code suivant montre comment utiliser la fonction InstrRev pour déterminer la position de la première occurrence de la sous-chaîne « le » dans la chaîne principale, en partant de la fin de la chaîne :
Sub UtilisationDeLaFonctionInStrRev()
Dim valeurUn As String
Dim positionSousChaine As Integer
valeurUn = "C'est le texte original dans lequel on cherche"
positionSousChaine = InStrRev(valeurUn, "le")
Debug.Print positionSousChaine
End Sub
Le résultat est affiché dans la fenêtre d’exécution:
La fonction InstrRev a retourné la position de la première occurrence de la sous-chaîne « le », mais en commençant la recherche à partir de la fin, soit 30. Notez que cette fonction inclut les espaces lorsqu’elle compte les caractères pour déterminer une position.
Suppression des Espaces dans une Chaîne de Caractères
La Fonction VBA LTrim
La fonction VBA LTrim supprime tous les espaces de tête d’un texte ou d’une chaîne. La syntaxe de la fonction VBA LTrim est la suivante :
LTrim(Chaîne) où :
- Chaîne – Le texte original.
Le code suivant montre comment utiliser la fonction VBA LTrim pour supprimer les espaces au début d’une chaîne de caractères donnée :
Sub UtilisationDeLaFonctionLTrim()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = " Voici l'adresse du site Web https://www.automateexcel.com/excel/"
valeurDeux = LTrim(valeurUn)
MsgBox valeurUn
MsgBox valeurDeux
End Sub
Les résultats sont les suivants :
La fonction LTrim a supprimé les espaces de tête de la chaine valeurUn, qui apparaît dans la deuxième boîte de message.
La Fonction VBA RTrim
La fonction VBA RTrim supprime tous les espaces à la fin d’un texte ou d’une chaîne. La syntaxe de la fonction VBA RTrim est la suivante :
RTrim(Chaine) où :
- Chaine – Le texte d’origine.
Le code suivant montre comment utiliser la fonction VBA RTrim pour supprimer les espaces à la fin d’une chaîne de texte donnée :
Sub UtilisationDeLaFonctionRTrim()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "Voici l'adresse du site Web https://www.automateexcel.com/excel/ "
valeurDeux = RTrim(valeurUn)
MsgBox valeurUn
MsgBox valeurDeux
End Sub
Les résultats obtenus sont :
La fonction RTrim a supprimé les espaces à la fin de la chaîne valeurUn, ce qui apparaît dans la deuxième boîte de message.
La fonction VBA Trim
La fonction VBA Trim supprime tous les espaces au début et à la fin d’une chaîne de texte. La syntaxe de la fonction VBA Trim est la suivante :
Trim(Chaîne) où :
- Chaîne – Le texte original.
Le code suivant montre comment utiliser la fonction VBA Trim pour supprimer les espaces au début et à la fin de la chaîne de caractères donnée :
Sub UtilisationDeLaFonctionTrim()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = " Voici l'adresse du site Web https://www.automateexcel.com/excel/ "
valeurDeux = Trim(valeurUn)
MsgBox valeurUn
MsgBox valeurDeux
End Sub
Les résultats sont les suivants :
La fonction Trim a supprimé les espaces de début et de fin de la valeurDeux, qui apparaît dans la deuxième boîte de message.
Fonctions de casse VBA
La Fonction VBA LCase
La fonction VBA LCase convertit les lettres d’un texte ou d’une chaîne en minuscules. La syntaxe de la fonction VBA LCase est la suivante :
LCase(Chaîne) où :
- Chaîne – Le texte original.
Le code suivant montre comment utiliser la fonction LCase pour convertir toutes les lettres de la chaîne donnée en minuscules :
Sub UtilisationDeLaFonctionLCase()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "VOICI LE RÉSULTAT"
valeurDeux = LCase(valeurUn)
MsgBox valeurDeux
End Sub
Le résultat est :
La fonction LCase a converti toutes les lettres de la chaîne en minuscules.
La Fonction VBA UCase
La fonction VBA UCase convertit les lettres d’un texte ou d’une chaîne en majuscules. La syntaxe de la fonction VBA UCase est la suivante :
UCase(Chaîne) où :
- Chaîne – Le texte original.
Le code suivant montre comment utiliser la fonction UCase String pour convertir toutes les lettres de la chaîne donnée en majuscules :
Sub UtilisationDeLaFonctionUCase()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "voici le résultat"
valeurDeux = UCase(valeurUn)
MsgBox valeurDeux
End Sub
Le résultat est le suivant :
La fonction UCase a converti toutes les lettres de la chaîne en majuscules.
La fonction VBA StrConv
La fonction VBA StrConv peut convertir les lettres d’un texte ou d’une chaîne de caractères en majuscules, minuscules, minuscules correctes ou unicodes, selon le type de conversion que vous spécifiez. La syntaxe de la fonction VBA StrConv est la suivante :
StrConv(Chaîne, Conversion, [LCID]) où :
- Chaîne – Le texte original.
- Conversion – Le type de conversion que vous souhaitez.
- [LCID](Facultatif) – Paramètre facultatif qui spécifie le LocaleID. S’il est vide, le LocaleID du système est utilisé.
Le code suivant montre comment utiliser la fonction StrConv String pour convertir la chaîne en casse correcte :
Sub UtilisationDeLaFonctionStrConv()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "voici LE résultat"
valeurDeux = StrConv(valeurUn, vbProperCase)
MsgBox valeurDeux
End Sub
Le résultat est :
Vous spécifiez le type de conversion que vous souhaitez effectuer à l’aide du paramètre de conversion :
- vbLowerCase convertit toutes les lettres du texte en minuscules.
- vbUpperCase convertit toutes les lettres du texte en majuscules.
- vbProperCase convertit la première lettre de chaque mot du texte en majuscule, tandis que toutes les autres lettres sont conservées en minuscule.
- vbUnicode convertit une chaîne de caractères unicode.
- vbFromUnicode convertit une chaîne de caractères unicode à la page de code par défaut du système.
Comparaison de Chaînes de Caractères
La Fonction VBA StrComp
La fonction VBA StrComp vous permet de comparer deux chaînes de caractères. La fonction renvoie :
- 0 si les deux chaînes de caractères correspondent
- -1 si la chaîne 1 est inférieure à la chaîne 2
- 1 si la chaîne 1 est supérieure à la chaîne 2
- Une valeur nulle si l’une des chaînes est Null
Le code suivant montre comment utiliser la fonction StrComp pour comparer deux chaînes de caractères :
Sub UtilisationDeLaFonctionStrComp()
Dim valeurUn As String
Dim valeurDeux As String
Dim resultofComparison As Integer
valeurUn = "AutomateExcel"
valeurDeux = "AutomateExcel"
résultatdelaComparaison = StrComp(valeurUn, valeurDeux)
Debug.Print résultatdelaComparaison
End Sub
Le résultat est le suivant :
La fonction StrComp a trouvé une correspondance exacte entre les deux chaînes de caractères et a renvoyé 0.
L’Opérateur Like de VBA
L’opérateur Like de VBA vous permet de comparer un texte ou une chaîne à un modèle et de voir s’il y a une correspondance. Vous utilisez généralement l’opérateur Like en conjonction avec des caractères génériques. Le code suivant montre comment utiliser l’opérateur Like :
Sub UtilisationDeLOpérateurLike()
Dim valeurUn As String
valeurUn = "Observons le résultat de la comparaison"
If valeurUn Like "*résultat*" Then
MsgBox "Il y a une correspondance, cette chaîne contient le mot résultat"
Else
MsgBox "Pas de correspondance trouvée"
End If
End Sub
Le résultat est le suivant :
Les caractères génériques que vous pouvez utiliser avec l’opérateur Like pour trouver des correspondances de motifs comprennent :
- ? qui correspond à un seul caractère
- # qui correspond à un seul chiffre
- * qui correspond à zéro ou plusieurs caractères
Le code suivant montre comment utiliser l’opérateur Like avec le caractère générique « ? » pour faire correspondre un motif dans votre code :
Sub UtilisationDeLOpérateurLikeAvecCaractèreGénérique()
Dim valeurUn As String
valeurUn = "Test"
If valeurUn Like "???t" Then
MsgBox "Il y a une correspondance, un motif de chaîne a été trouvé"
Else
MsgBox "Pas de correspondance trouvée"
End If
End Sub
End Sub
Le résultat obtenu est :
Autres Fonctions VBA Utiles pour les Chaînes de Caractères
La Fonction VBA Replace
La fonction VBA Replace remplace un ensemble de caractères dans une chaîne par un autre ensemble de caractères. La syntaxe de la fonction VBA Replace est la suivante :
Replace(Chaîne, Chercher, Remplacer, [Départ], [Compte], [Comparaison]) où :
- Chaîne – Le texte original.
- Chercher – La sous-chaîne à rechercher dans le texte d’origine.
- Remplacer – La sous-chaîne à remplacer par la sous-chaîne recherchée.
- Départ (facultatif) – La position à partir de laquelle la recherche doit commencer dans le texte d’origine. S’il est vide, la valeur 1 est utilisée et la fonction commence à la position du premier caractère.
- Compte (facultatif) – Nombre d’occurrences de la sous-chaîne recherchées dans le texte d’origine à remplacer. Si le champ est vide, toutes les occurrences de la sous-chaîne recherchée sont remplacées.
- Comparaison (Facultatif) – Spécifie le type de comparaison à effectuer. S’il est vide, la comparaison binaire est utilisée.
-vbBinaryCompare – Comparaison binaire
-vbTextCompare – Comparaison de texte
-vbDatabaseCompare – Comparaison de bases de données (Cette option est utilisée dans Microsoft Access uniquement, et il s’agit d’une comparaison basée sur la base de données)
Le code suivant montre comment utiliser la fonction Replace :
Sub UtilisationDeLaFonctionReplace()
Dim valeurUn As String
Dim valeurDeux As String
valeurUn = "ProduitABC"
valeurDeux = Replace(valeurUn, "ABC", "XYZ")
MsgBox valeurDeux
End Sub
Le résultat est le suivant :
La fonction Replace a trouvé la sous-chaîne ABC dans la chaîne ProduitABC et l’a remplacée par la sous-chaîne XYZ.
La Fonction VBA StrReverse
La fonction VBA StrReverse inverse les caractères d’un texte ou d’une chaîne de caractères donnée. La syntaxe de la fonction VBA StrReverse est la suivante :
StrReverse(Chaîne) où :
- Chaîne – Le texte original.
Le code suivant montre comment utiliser la fonction VBA StrReverse pour inverser les caractères de la chaîne Produit :
Sub UsingTheStrReverseStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "Produit
valueTwo = StrReverse(valueOne)
MsgBox valueTwo
End Sub
Le résultat est le suivant :
La Fonction VBA Len
La fonction VBA Len renvoie le nombre de caractères d’une chaîne de texte. La syntaxe de la fonction VBA Len est la suivante :
Len(Chaîne) où :
- Chaîne – Le texte d’origine.
Le code suivant montre comment utiliser la fonction Len String pour déterminer la longueur de la chaîne AutomateExcel :
Sub UtilisationDeLaFonctionLen()
Dim valeurUn As String
Dim longueurChaine As Integer
valeurUn = "AutomateExcel"
longueurChaine = Len(valeurUn)
Debug.Print longueurChaine
End Sub
Le résultat est le suivant :
La fonction Len a compté tous les caractères du texte AutomateExcel, soit 13 lettres.