Médiaforma

VBA Excel – Traitement du texte

Partagez cet article sur vos réseaux

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)

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.

 
Commentaires

Aucun commentaire pour l'instant.

Laissez un commentaire