Comme vous allez le voir dans cet article, VBA possède de nombreuses fonctions pour manipuler du texte. Au fil de l’article, vous découvrirez les fonctions Len(), Left(), Right(), Mid(), LTrim(), RTrim(), Trim(), UCase(), LCase(), Proper(), Replace(), Val(), IsNumeric(), IsDate() et beaucoup d’autres.
Longueur d’une chaîne
La fonction Len() retourne la longueur de la chaîne passée en argument.
Exemple :
Dim ch As String ch = "Ceci est une chaîne" MsgBox "Longueur de la chaîne : " & Len(ch)
Extraction de sous-chaînes
Pour extraire une sous-chaîne d’une chaîne, vous pouvez utiliser les fonctions Left(), Right() et Mid() :
- La fonction Left(ch, nombre) renvoie les nombre caractères au début de la chaîne ch.
- La fonction Right(ch, nombre) renvoie les nombre caractères à la fin de la chaîne ch.
- Enfin, la fonction Mid(ch, deb, long) renvoie les long caractères de la chaîne ch, en partant du caractère de position deb.
Exemples :
Dim s As String s = "une simple chaîne" MsgBox Left(s, 5) MsgBox Right(s, 6) MsgBox Mid(s, 5, 5)
Voici les boîtes de dialogue affichées par ce code :
Suppression d’espaces au debut et/ou à la fin
Les fonctions LTrim(), RTrim() et Trim() permettent de supprimer les espaces (respectivement) au début, à la fin et des deux côtés d’une chaîne.
Exemples :
Dim s As String s = " >une chaîne< " MsgBox "LTrim(s) : " & LTrim(s) & " longueur " & Len(LTrim(s)) & vbLf & _ "RTrim(s) : " & RTrim(s) & " longueur " & Len(RTrim(s)) & vbLf & _ "Trim(s) : " & Trim(s) & " longueur " & Len(Trim(s))
Voici le résultat de l’exécution de ce code :
Casse des caractères
Les fonctions Ucase(), Lcase() et Application.Proper() permettent de modifier la casse des caractères.
Voici un exemple d’utilisation :
Dim s As String s = "un peu de texte dans une variable String" MsgBox "Ucase(s) = " & UCase(s) & vbLf & _ "Lcase(s) = " & LCase(s) & vbLf & _ "Application.proper(s) = " & Application.Proper(s)
Voici le résultat de ce code :
Valeur numérique d’une chaîne
La fonction Val() convertit son argument chaîne en un nombre lorsque cela est possible. Lorsque cela n’est pas possible, elle retourne la valeur 0.
Voici un exemple de code :
Dim s As String Dim r As Single s = "12.25" r = Val(s) MsgBox r s = "bonjour" r = Val(s) MsgBox r
Et le résultat de son exécution :
Remplacement d’une sous-chaîne par une autre
La fonction Replace() permet de remplacer une sous-chaîne par une autre dans une chaîne.
Voici un exemple de code :
Dim s As String s = "Illustration de la fonction Replace()" MsgBox Replace(s, "e", "E")
Ici, tous les « e » sont remplacés par des « E« . Voici le résultat :
Deux autres paramètres peuvent être passés à la fonction Replace() : la position du premier remplacement et le nombre de remplacements. Voici un exemple pour mieux comprendre comment utiliser ces paramètres :
Dim s As String s = "la la la la lère" MsgBox Replace(s, "la", "LA", 2, 2)
Ici, deux remplacements seront effectués (le dernier paramètre) et la chaîne retournée commencera au deuxième caractère de la chaîne originale. Voici le résultat :
Conversions et mises en forme
Plusieurs fonctions permettent de convertir une donnée d’un certain type dans un autre type :
Fonction | Conversion en |
CBool() | Boolean |
CByte() | Byte |
CCur() | Currency |
CDate() | Date |
CDbl() | Double |
CDec() | Decimal |
CInt() | Integer |
CLng() | Long |
CSng() | Single |
CStr() | String |
CVar() | Variant |
Par exemple, pour convertir un Single en Integer, vous pourriez utiliser ces instructions :
Dim pi As Single pi = 3.14158265 MsgBox CInt(pi)
Voici le résultat :
Mise en forme
La fonction Format() permet de mettre en forme des nombres, des dates et des chaînes. Elle retourne une valeur de type String. Voici sa syntaxe :
Format(expression, format)
Où expression est l’expression à mettre en forme et format est le format de mise en forme à appliquer à l’expression.
Voici quelques exemples :
Dim s As Single s = 1234.456 MsgBox Format(s, "0 000.00 €") Dim d As Date d = Date MsgBox Format(d, "dddd dd/mm/yyyy") MsgBox Format(d, "dd mmmm yyyy")
Et voici le résultat de l’exécution :
Pour aller plus loin avec la fonction Format(), je vous suggère de consulter la page dédiée à cette fonction sur MSDN.