Fonctions VBA Chaînes et Sous-Chaînes

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

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.

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA