Typer les variables en Visual Basic

Alternatives au mot clé As en VBA

Nous connaissons tous la façon de typer une variable avec le mot clé « As ».

Dim myVarA As String, myVarB As String, myVarC As Byte.

Toutes les variables doivent être typées

L'erreur suivante est courante chez les débutants, qui considèrent que myVarA est de type String alors qu'elle est de type Variant.

Dim myVarA, myVarB As String

Pour éviter toutes confusions, si une variable doit être effectivement de type Variant c'est mieux de le préciser :

Dim myVarA As Variant, myVarB As String

Caractères de types

Il existe un caractère qui peut remplacer le mot clé « As » et le nom du type. Ainsi le symbole du pourcentage (%) indique une variable de type « Integer ».

Dim myVar% ' Variable de type Integer identifiée par son caractère %.

myVar% = 1 ' L'instruction myVar = 1 est elle aussi valide.

L'avantage de rajouter le caractère de type à la fin de la variable à l'usage c'est qu'il nous renseigne à la lecture du code du type de la variable.

On appellera ce caractère un identificateur.

Liste des identificateurs

Les caractères de type et leurs significations.
Caractère de type Type de données Déclaration Exemple
% Integer Dim X% X% = 1 ou X = 1
& Long Dim X& X& = 1 ou X = 1
! Single Dim X! X! =1 ou X = 1
# Double Dim X# X# = 1.1 ou X = 1.1
$ String Dim X$ X$ = "Bonjour" ou X = "Bonjour"
@ Currency Dim X@ X@ = 1.1 ou X = 1.1
^ LongLong Dim X^ X^ = 5 ou X = 5

Déclarations implicites

Il est possible de définir un caractère qui représentera un type de données avec une instruction de type « DefType ».

La déclaration doit se faire au niveau module. Elle est interdite dans une procédure ou fonction.

Exemple de définition

DefStr L ' Toutes les variables dont le nom commence par « L » ou « l » seront de type String (DefStr).

DefDbl C ' Toutes les variables dont le nom commence par « C » ou « c » seront de type Double (DefDbl).

Sub Text()

Dim Lib ' Type String, commence par L.

Dim Cout ' Type Double, commence par C.

Lib = "Bonjour"

Cout = 5.3

End Sub

Comme toujours, VBA ne tient pas compte de la casse. Ainsi « DefStr L » est identique à « DefStr l ».

Utiliser plusieurs caractères pour le même type

En séparant les caractères par la virgule (,), il est possible d'utiliser plusieurs lettres.

Les variables dont le nom commence par B ou S seront de type Boolean (DefBool).

DefBool B, S

Sub Test

  Dim bOk, Signal ' Variables de type Boolean.

  BOk = True

End Sub

Définir un intervalle

Il est possible de définir un intervalle de lettres qui représente un type.

Dans la déclaration « DefBool B-D », toutes les variables dont le nom commence par b ou c ou d, seront de type Boolean (DefBool).

Le tiret veut dire toute les variables dont le nom commence entre les lettres B et E seront du type précisé.

Exemple d'intervalle

DefInt M-Q ' Les variables dont le nom commence par m ou n ou o ou p ou q seront de type Integer (DefInt).

Sub Test

  ' Type Integer (DefInt) car le nom des variables commence par une lettre comprise dans l'intervalle de définition.

  dim montant, quantite

  quantite = 3

End Sub

Liste de définitions

Les définitions de type.
DefType Commentaire
DefStr Toutes les variables sont de type String.
DefBool Toutes les variables sont de type Boolean.
DefDbl Toutes les variables sont de type Double.
DefInt Toutes les variables sont de type Integer.
DefDate Toutes les variables sont de type Date.
DefLng Toutes les variables sont de type Long.
DefCur Toutes les variables sont de type Currency.
DefObj Toutes les variables sont de type Object.
DefSng Toutes les variables sont de type Single.
DefVar Toutes les variables sont de type Variant.
DefByte Toutes les variables sont de type Byte.
DefLngLng Toutes les variables sont de type LongLong.
DefLngPtr Toutes les variables sont de type LongPtr.
DefDec Toutes les variables sont de type LongDec.

Combiner intervalle et lettre unique

Il suffit de combiner la syntaxe pour un intervalle et la virgule.
Dans la déclaration DefStr A-C, X, toutes les variables dont les noms commencent par a, b, c ou x sont de type String (DefStr).

Exemple de combinaison

DefLng G-L, V ' Type Long (DefLng)

Sub Test

  ' Le "h" de horizontal est dans l'intervalle G-L, et la variable nommée vertical commence par "v".

  Dim horizontal, vertical

End Sub

Cas d'erreurs

DefDec Z ' Le type Decimal n'est pas implémenté, et ne le sera probablement jamais.

Defbool GH ' C'est forcément une seule lettre et le tiret est nécessaire pour créer un interval.

Une lettre ne peut représenter qu'un seul type.

DefInt A-D

DefBool C ' La lettre "C" est déjà utilisée dans l'intervalle A-D.

Variables objet

Sur Microsoft Excel, pour faire référence à une variable objet, nous utilisons la syntaxe suivante :

Dim maCellule As Range

Set MaCellule = Range("A1")

MaCellule = "Bonjour"

MsgBox Left(MaCellule, 3) ' Retourne la chaine "Bon".

Il est possible de raccourcir l'écriture en mettant l'adresse de la cellule entre crochets comme dans l'expression :

[A1] = "Bonjour"

Avec cette syntaxe, les expressions qui manipulent cet objet doivent être écrites entre crochets.

MsgBox [Left(A1, 3)] ' Retourne la chaine "Bon".

Microsoft Access utilise abondamment cet opérateur pour les noms d'objets (table, champs, formulaires, etc.) et si vous êtes familier de la base de données, vous le connaissez déjà.

Une variable scalaire peut elle aussi être décorée avec des crochets.

Dim x As String

[x] = "Bonsoir" ' Crochets avec une variable scalaire.

MsgBox Left(x, 3) ' La variable x n'est pas un objet. Il ne faut pas entourer l'expression de crochets.

Il n’y a aucun intérêt ou avantage à utiliser cette syntaxe pour des variables non objets.


Achetez mon ouvrage !

Mon PDF « Créer un planning perpétuel sur Microsoft Excel sans macro » est disponible à la vente.

Pour plus d’informations, rendez-vous sur la page dédiée.