I. Introduction

La première chose à savoir est qu'il existe 2 types de chaînes de caractères en VB. Les chaînes de longueur fixe et les chaînes de longueur variable. Ces deux types de chaînes ont une limite de capacités différentes :

  • les chaînes de longueur fixe peuvent aller jusqu'à 2^16 soit 64 ko ;
  • les chaînes de longueur variable sont limitées à 2^31 soit 2 Go.

II. Concaténation de chaînes

Il existe deux méthodes pour concaténer les chaînes de caractères. Vous pouvez soit utiliser l'opérateur + soit l'opérateur &. Quelle est la différence entre ces deux opérateurs ?

La différence se trouve quand vous souhaitez concaténer plusieurs types différents dans une chaîne de caractères. Pour mieux comprendre voici un exemple.

 
Sélectionnez
'Déclaration des variables
Dim strResultat As String

strResultat = "Test " & 1 & 2
'Le résultat est Test 12

strResultat = "Test " + 1 + 2
'Le résultat est Test 3

Si vous souhaitez utiliser le + plutôt que le & faites très attention à ce que vous souhaitez faire. De plus le & est plus rapide que le + pour la concaténation.

Le cas présenté ci-dessus est le plus simple. Vous pouvez concaténer le contenu de plusieurs variables.

 
Sélectionnez
'Déclaration des variables
Dim strResultat As String
Dim i As Integer
Dim str As String

i = 12
str = "Test"
strResultat = str & " " & i
'Le résultat est Test 12

Seulement il arrive, par exemple lors de la création de requête SQL, que votre ligne soit trop grande pour passer à l'écran, ce qui rend plus difficile la lecture. Vous pouvez donc écrire votre requête sur plusieurs lignes grâce au caractère _.

 
Sélectionnez
'Déclaration des variables
Dim strResultat As String
Dim i As Integer
Dim str As String

i = 12
str = "Test"
strResultat = str & _
" " & _
i
'Le résultat est Test 12

Cette technique a une limite, car vous ne pouvez enchaîner plus de 25 lignes de cette façon. Il existe une deuxième solution qui est aussi souvent utilisée :

 
Sélectionnez
'Déclaration des variables
Dim strResultat As String
Dim i As Integer
Dim str As String

i = 12
str = "Test"
strResultat = str
strResultat = strResultat & " "
strResultat = strResultat & i
'Le résultat est Test 12

III. Suppression des blancs (espaces)

En VB, il existe deux fonctions permettant de supprimer les blancs en début et fin de chaîne. Ces deux fonctions sont LTrim et RTrim.

LTrim permet de supprimer les espaces en début de chaîne. Par exemple :

 
Sélectionnez
MsgBox "-" & LTrim(" Coucou!! ") & "-"
'Affiche -Coucou!! -

Vous pouvez remarquer que l'espace après les points d'exclamation est toujours présent. Pour supprimer cet espace vous pouvez utiliser RTrim.

 
Sélectionnez
MsgBox "-" & RTrim(" Coucou!! ") & "-"
'Affiche - Coucou!!-

Pour enlever l'espace en début et fin de chaîne vous utiliseriez LTrim(RTrim(strMaChaine)). Ce n'est pas faux. Mais une autre fonction Trim fait exactement la même chose.

 
Sélectionnez
MsgBox "-" & Trim(" Coucou!! ") & "-"
'Affiche -Coucou!!-

Enlever les espaces en trop en début et fin de chaîne c'est pratique mais comment enlever ceux contenu dans la chaîne. Rien de plus simple il suffit de remplacer tous les espaces par rien. Pour cela il faut utiliser la méthode Replace que nous verrons plus tard.

IV. Rechercher une chaîne dans une chaîne

La rechercher d'une chaîne dans un autre est réalisée par la fonction InStr.

Cette fonction permet à la fois de vérifier si la chaîne recherchée est bien présente, et si oui, alors elle retourne la position de la première itération de la chaîne recherchée.

La fonction InStr s'utilise de la façon suivante: InStr([PositionDeDépart],Chaine1,Chaine2,[TypeDeComparaison])

PositionDeDépart : Entier indiquant à partir de quel caractère la recherche doit être réalisée (Facultatif). Par défaut c'est 1.

Chaine1 : Chaine recherchée

Chaine2 : Chaine sur laquelle s'effectue la recherche

TypeDeComparaison : Indique le type de comparaison à faire (Facultatif).

Nom de la constante Valeur Description
vbUseCompareOption -1 Effectue la comparaison en fonction de l'état de Option Compare.
vbBinaryCompare 0 Effectue une comparaison binaire
vbTextCompare 1 Effectue une comparaison sur les caractères
vbDatabaseCompare 2 Microsoft Access uniquement. Effectue la comparaison sur les informations de la base de donénes

Voici un exemple afin de mieux comprendre son fonctionnement :

 
Sélectionnez
MsgBox InStr("atotobtoto","toto")

'Vous verrez s'afficher 2, ce qui correspond à la position à laquelle toto apparaît pour la première fois

V. Remplacer une chaîne par une autre

Cette fonction est souvent utilisée dans le cas de création de requêtes. Par exemple pour remplacer les simples côtes par des doubles côtes, des virgules par des points, des blancs par rien, etc.

La fonction permettant de réaliser ce travail est la fonction Replace. Son utilisation est on ne peut plus simple.

 
Sélectionnez
nouvelleChaine = Replace(actuelleChaine,ChaineARemplacer,ChaineAMettreALaPlace)

L'exemple suivant va remplacer les virgules par des points :

 
Sélectionnez
strNew = Replace(strOld,",",".")

VI. Découper une chaîne de caractères

Il arrive que vous deviez traiter une ligne d'un fichier ou autre source de données, en la découpant en fonction d'un séparateur. Une fonction VB vous permet de faire cela : Split. Cette fonction s'utilise de la manière suivante : monTab = Split(maChaine,monSéparateur).

Comme vous pouvez le voir, la fonction Split retourne un tableau (de base 0) qui contient dans chaque case les différents champs de votre chaîne.

Un petit exemple pour éclaircir tout ça :

 
Sélectionnez
Dim monTab() As String

monTab = Split("Champ1@@@Champ2@@@Champ3","@@@")

Comme résultat vous obtiendrez un tableau à 3 cases (de 0 à 2) avec monTab(0) = "Champ1", monTab(1)="Champ2", monTab(2)="Champ3". Le séparateur peut être aussi long que vous le souhaitez.

ATTENTION pour ceux qui auraient déjà utilisé strtok en C : la chaîne indiquant le séparateur est elle même le séparateur. Si vous faîtes Split("Bonjour. Salut; Ca va,",".;,") vous n'obtiendrez pas "Bonjour", " Salut", "Ça va" car le séparateur est la chaîne ".;,".

Split retournant un tableau est lui-même un tableau. Donc pour récupérer le premier élément vous pouvez écrire Split(maChaine,monSep)(0), pour récupérer le n-ième élément vous faîtes Split(maChaine,monSep)(n-1), et pour récupérer le dernier élément vous faites Split(maChaine,monSep)(UBound(Split(maChaine,monSep)))

VII. Quelques trucs à savoir

La première chose à laquelle il faut faire attention c'est la taille maximale de la chaîne comme je l'ai indiqué en introduction.

La deuxième est comment insérer des doubles côtes dans une chaîne de caractères. Beaucoup de personnes bloquent sur ce problème. Donc maintenant plus d'excuses : Pour cela vous devez doubler les doubles côtes. Voici un petit exemple :

 
Sélectionnez
strNew = "Voici une double côtes "". "
'Le résultat est le suivant : Voici une double côtes ".

VIII. Remarque

Il est tout à fait possible qu'il y ait des erreurs dans le document. Si vous en trouvez, ou bien souhaitez un peu plus d'explication sur certains points, veuillez m'envoyer un message privé via le forum afin de mettre à jour l'ensemble de ce document. D'avance merci.