VBA – Type de Données Chaine de Texte (Dim String)
In this Article
Type de Variable Chaîne de Texte
Le type de données chaine plus souvent appelé String est l’un des types de données les plus courants dans VBA. Il stocke des « chaînes » de texte.
Pour déclarer une variable de type String, vous utilisez l’instruction Dim (abréviation de Dimensionner) :
Dim strNom as String
Pour attribuer une valeur à une variable, on utilise le signe égal :
strNom = "Fred Smith"
L’insertion de ce signe dans une procédure se présente comme suit :
Sub strExemple()
'déclaration de la chaine
Dim strNom as string
'populer la chaine
strNom = "Fred Smith"
'afficher dans une boite de message
MsgBox strNom
End Sub
Si vous exécutez le code ci-dessus, la boîte de message suivante s’affichera.
Variable de Chaîne Fixe
Il existe en fait deux types de variables de chaîne : variables et fixes.
La variable de chaîne « variable » (illustrée dans l’exemple précédent) permet à votre chaîne d’être de n’importe quelle longueur. C’est le cas le plus courant.
La variable de chaîne « fixe » définit la taille de la chaîne. Une chaîne fixe peut contenir jusqu’à 65 400 caractères.
Dim strNom as string *20
Lorsque vous définissez une variable fixe, le nombre de caractères de la variable est bloqué, même si vous utilisez moins de caractères.
Remarquez les espaces dans le graphique ci-dessous : la variable contient des caractères de remplacement pour le reste de la chaîne, car « Fred Smith » compte moins de 20 caractères.
Toutefois, si vous avez déclaré une chaîne de caractères sans en spécifier la longueur, celle-ci ne contiendra que le nombre de caractères qui lui sont transmis.
Déclarer une Variable de Type Chaîne au Niveau du Module ou au Niveau Global
Dans l’exemple précédent, vous avez déclaré la variable Chaîne dans une procédure. Les variables déclarées dans une procédure ne peuvent être utilisées que dans cette procédure.
En revanche, vous pouvez déclarer des variables de type « String » au niveau du module ou au niveau global.
Niveau du Module
Les variables de Niveau Module sont déclarées au début des modules de code à l’aide de l’instruction Dim.
Ces variables peuvent être utilisées avec n’importe quelle procédure de ce module de code.
Niveau Global
Les variables de Niveau Global sont également déclarées en haut des modules de code. Cependant, au lieu d’utiliser l’instruction Dim, vous utilisez l’instruction Public pour indiquer que la variable de chaîne est disponible pour être utilisée dans l’ensemble de votre projet VBA.
Public strNom as String
Si vous déclarez la variable chaîne au niveau d’un module et que vous l’utilisiez dans un autre module, une erreur se produira.
Toutefois, si vous utilisez le mot-clé Public pour déclarer la variable chaîne, l’erreur ne se produira pas et la procédure s’exécutera parfaitement.
Convertir des Valeurs Stockées sous Forme de Chaînes de Caractères
Il peut arriver que vous ayez dans Excel des valeurs stockées sous forme de texte – par exemple, vous avez importé un fichier CSV qui a pu contenir du texte au lieu de chiffres.
Notez que la valeur dans A1 est alignée à gauche, ce qui indique qu’il s’agit d’une valeur texte.
Vous pouvez utiliser une Fonction VBA peut être utilisée pour convertir ces nombres en texte
Sub ConvertirValeur()
'populer la chaine
strQty = Range("A1")
'populer le nombre (double) avec la chaine
dblQty = strQty
'populer la plage avec le nombre
Range("A1") = dblQty
End Sub
Lorsque vous exécutez le code, le nombre se déplace vers la droite, ce qui indique qu’il est désormais stocké sous forme de nombre.
Cette fonction est particulièrement utile lorsque vous parcourez en boucle une grande plage de cellules.
Sub ConvertirValeur()
Dim strQty As String, dblQty As Double
Dim rw As Integer, i As Integer
'Compte les rangées à convertir
rw = Range("A1", Range("A1").End(xlDown)).Rows.Count
'Boucle sur chaque cellule et les convertit nombre
For i = 0 To rw – 1
'popule la chaine
strQty = Range("A1").Offset(i, 0)
'popule le nombre (double) avec la chaine
dblQty = strQty
'popule la plage avec le nombre
Range("A1").Offset(i, 0) = dblQty
Next i
End Sub
Le résultat est que toutes les cellules sont converties en nombres
Convertir des Chaînes de Caractères Stockées en Tant que Valeurs
De même, il peut arriver que vous deviez convertir une chaîne de caractères en valeur – par exemple, si vous avez besoin d’un zéro initial dans un numéro de téléphone.
Sub ConvertirChaine()
Dim strPhone As String, dblPhone As Double
Dim rw As Integer, i As Integer
'compte les rangées à convertir
rw = Range("A1", Range("A1").End(xlDown)).Rows.Count
'boucle sur chaque cellule et les convertit nombre
For i = 0 To rw – 1
'popule la chaine
dblPhone = Range("A1").Offset(i, 0)
'popule le nombre (double) avec la chaine
strPhone = "'0" & dblPhone
'popule la plage avec le nombre
Range("A1").Offset(i, 0) = strphone
Next i
End Sub
Notez que vous devez commencer la chaîne de texte par une apostrophe (‘), avant le zéro, afin d’indiquer à Excel d’entrer la valeur sous forme de chaîne.