I. Introduction▲
La première chose à savoir est qu'il existe 2 types de chaines de caractères en VB. Les chaines de longueur fixe et les chaines de longueur variable. Ces deux types de chaines ont une limite de capacités différentes :
- les chaines de longueur fixe peuvent aller jusqu'à 2^16 soit 64 ko ;
- les chaines de longueur variable sont limitées à 2^31 soit 2 Go.
II. Concaténation de chaines▲
Il existe deux méthodes pour concaténer les chaines 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 chaine de caractères. Pour mieux comprendre, voici un exemple.
'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.
'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 _.
'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 :
'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 chaine. Ces deux fonctions sont LTrim et RTrim.
LTrim permet de supprimer les espaces en début de chaine. Par exemple :
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.
MsgBox
"-"
&
RTrim
(
" Coucou!! "
) &
"-"
'Affiche - Coucou!!-
Pour enlever l'espace en début et fin de chaine vous utiliseriez LTrim(RTrim(strMaChaine)). Ce n'est pas faux. Mais une autre fonction Trim fait exactement la même chose.
MsgBox
"-"
&
Trim
(
" Coucou!! "
) &
"-"
'Affiche -Coucou!!-
Enlever les espaces en trop en début et fin de chaine c'est pratique, mais comment enlever ceux contenus dans la chaine. 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 chaine dans une chaine▲
La rechercher d'une chaine dans un autre est réalisée par la fonction InStr.
Cette fonction permet à la fois de vérifier si la chaine recherchée est bien présente, et si oui, alors elle retourne la position de la première itération de la chaine 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 données |
Voici un exemple afin de mieux comprendre son fonctionnement :
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 chaine par une autre▲
Cette fonction est souvent utilisée dans le cas de création de requêtes. Par exemple pour remplacer les simples quotes par des doubles quotes, 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.
nouvelleChaine =
Replace
(
actuelleChaine,ChaineARemplacer,ChaineAMettreALaPlace)
L'exemple suivant va remplacer les virgules par des points :
strNew =
Replace
(
strOld,","
,"."
)
VI. Découper une chaine 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 chaine.
Un petit exemple pour éclaircir tout ça :
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 chaine indiquant le séparateur est elle même le séparateur. Si vous faites Split(« Bonjour. Salut; ça va, »,« .;, ») vous n'obtiendrez pas « Bonjour », « Salut », « Ça va » car le séparateur est la chaine « .;, ».
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 chaine comme je l'ai indiqué en introduction.
La deuxième est comment insérer des doubles quotes dans une chaine de caractères. Beaucoup de personnes bloquent sur ce problème. Donc maintenant plus d'excuses : Pour cela vous devez doubler les doubles quotes. Voici un petit exemple :
strNew =
"Voici une double quote "". "
'Le résultat est le suivant : Voici une double quote ".
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.