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 StringPour é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 StringCaractè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
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, SSub 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
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.