Excel · VBA · A3iformations

Les chaînes de caractères en VBA : Len, Left, Right, Mid, UCase, InStr, Trim, Split et Join

Une chaîne de caractères (type String) est un texte : un nom, un code article, une ligne importée d’un fichier. VBA fournit des fonctions pour la mesurer (Len), en extraire une partie (Left, Right, Mid), changer sa casse (UCase, LCase), y chercher un texte (InStr, Like), la nettoyer (Trim) ou la découper (Split, Join). Dans chaque simulateur, les caractères sont numérotés à partir de 1 et les espaces sont affichés « · ». Voir aussi les opérateurs (dont & et Like) et les boucles.

Len, Left, Right, MidMesurer, extraire
UCase, LCaseChanger la casse
InStr, LikeChercher
Trim, Split, JoinNettoyer, découper
1

Len() : la longueur d’une chaîne

Len(texte) renvoie le nombre de caractères d’une chaîne, espaces compris. Elle sert à vérifier une saisie (un code postal fait 5 caractères), à repérer une cellule vide (Len(Cells(i, 1).Value) = 0) ou à calculer une position pour Right et Mid. Une chaîne vide "" a une longueur de 0.

Simulateur : compter les caractères
Fenêtre d’exécution

Contrôler une saisieIf Len(cp) <> 5 Then MsgBox "Code postal incorrect" : un test simple avant d’enregistrer une fiche.
NombresLen(1500) renvoie 4 : VBA convertit d’abord le nombre en texte.
2

Left(), Right() et Mid() : extraire une partie

Left(texte, n) renvoie les n premiers caractères, Right(texte, n) les n derniers. Mid(texte, départ, longueur) renvoie une partie située au milieu : à partir du caractère départ (le premier caractère porte le numéro 1), sur longueur caractères ; sans longueur, Mid renvoie tout jusqu’à la fin. Ces fonctions découpent des codes structurés : EXC-2026-Lille contient un logiciel, une année et une ville.

Simulateur : extraire des caractères
Fenêtre d’exécution

Longueur variablePour tout prendre sauf les 4 premiers caractères : Right(t, Len(t) - 4), ou plus simplement Mid(t, 5).
Départ 0Le premier caractère porte le numéro 1. Mid(t, 0, 3) provoque l’erreur 5, tout comme une longueur négative.
3

Majuscules et minuscules : UCase() et LCase()

UCase(texte) met tout en majuscules, LCase(texte) tout en minuscules. Pour une majuscule au début de chaque mot (comme NOMPROPRE dans Excel), utilisez StrConv(texte, vbProperCase). Par défaut, VBA compare les textes en tenant compte de la casse : « Excel » et « EXCEL » sont différents. Comparer les deux versions en majuscules règle le problème.

Simulateur 1 : convertir la casse
Simulateur 2 : comparer sans tenir compte de la casse

vbProperCaseSeule la lettre qui suit un espace passe en majuscule : « jean-pierre » devient « Jean-pierre ».
Option Compare TextPlacée en tête de module, cette ligne rend toutes les comparaisons du module insensibles à la casse.
4

Présence d’une sous-chaîne : InStr() et Like

InStr(texte, cherché) renvoie la position de la première occurrence du texte cherché, ou 0 s’il est absent. On l’utilise donc dans un test : If InStr(t, "Excel") > 0 Then. La forme complète InStr(départ, texte, cherché, vbTextCompare) commence la recherche plus loin et ignore la casse. InStrRev cherche depuis la fin. L’opérateur Like répond seulement Vrai ou Faux, mais accepte des caractères génériques : t Like "*Excel*".

Simulateur 1 : trouver la position d’un texte

    

Simulateur 2 : InStr, InStrRev et Like dans la fenêtre d’exécution
If InStr(t, « x ») ThenCette forme fonctionne (toute valeur non nulle est vraie), mais > 0 rend l’intention claire et évite les erreurs avec Not.
InStr ou Like ?InStr donne une position, utile pour découper avec Left ou Mid. Like vérifie un format complet : code Like "EXC-####".
5

Trim() : effacer des espaces

Les données saisies ou importées contiennent souvent des espaces en trop, invisibles mais qui faussent les comparaisons : "Durand " n’est pas égal à "Durand". Trim(texte) supprime les espaces au début et à la fin, LTrim seulement à gauche, RTrim seulement à droite. Les espaces à l’intérieur du texte sont conservés ; pour réduire les espaces multiples à un seul, utilisez la fonction de feuille Application.WorksheetFunction.Trim (SUPPRESPACE).

Simulateur : nettoyer un texte

    

Nettoyer avant de comparerIf UCase(Trim(Cells(i, 1).Value)) = "EXCEL" Then : Trim et UCase ensemble neutralisent les espaces et la casse.
Espace insécableUn texte copié depuis le web contient parfois des espaces insécables (Chr(160)) que Trim ne supprime pas : Replace(t, Chr(160), " ") avant Trim.
6

Split() et Join() : découper et assembler

Split(texte, séparateur) découpe une chaîne en un tableau de chaînes, à chaque séparateur. Le premier élément porte l’indice 0 et le dernier UBound(tableau). Sans séparateur, Split découpe sur l’espace. Join(tableau, séparateur) fait l’inverse : il assemble les éléments en une seule chaîne. C’est la méthode la plus simple pour lire une ligne CSV, séparer un prénom d’un nom ou reconstituer une liste.

Simulateur 1 : découper puis réassembler
Fenêtre d’exécution

Simulateur 2 : Split dans une expression
DéclarationDéclarez la variable qui reçoit Split comme un tableau dynamique : Dim t() As String, puis t = Split(ligne, ";").
Indice 0Le premier élément est t(0). Un indice supérieur à UBound(t) provoque l’erreur 9.
Exercice : nettoyer, extraire, chercher et découper

Classeur d’exercice (Énoncé et Corrigé)

  1. Enregistrez le classeur en .xlsm et collez le code de la feuille « Code VBA » dans un module standard.
  2. Feuille Données : exécutez Nettoyer (Trim, StrConv, Len) puis Extraire (Left, Mid).
  3. Exécutez Compter (InStr, Like) et Decouper (Split, Join).
  4. Répondez aux questions de la feuille Contrôle.
A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA Interface Excel Microsoft 365 en français