Types de variables dans Excel VBA

Le type de données d’une variable spécifie le type de données que la variable peut stocker. Vous spécifiez le type de données d’une variable en incluant le mot clé As. La syntaxe est la suivante :

Dim NomDeLaVariable As Type

S’il n’y a pas de type de données, le type par défaut est Variant. VBA prend en charge les types de données suivants pour les variables :

Nom Type Détails
Byte Numérique Nombre entier de 0 à 255.
Integer Numérique Nombre entier de -32 768 à 32 767
Long Numérique Nombre entier de –2 147 483 648 à 2 147 483 647
Currency Numérique Nombre à décimale fixe de –922 337 203 685 477,5808 à 922 337 203 685 477,5807
Single Numérique –3,402823E38 à –1,401298E-45 (pour les valeurs négatives); 1.401298E – 45 à 3.402823E38 (pour les valeurs positives)
Double Numérique –1,79769313486232E308 à –4,94065645841247E-324 (valeurs négatives); 4,94065645841247E-324 à 1,79769313486232E308 (pour les valeurs positives)
String Texte Texte.
Date Date Date et heure.
Boolean Boolean True (vrai) ou False (faux).
Object Objet Objet Microsoft.
Variant Tous Tout type de données (type par défaut si la variable n’est pas déclarée).

NOTE                                                                                                           

Lorsque vous trouvez une instruction dans une procédure VBA qui attribue une valeur à une variable, vous pouvez localiser rapidement la définition de la variable en sélectionnant le nom de la variable et en appuyant sur Maj + F2 ou en choisissant Afficher / Définition. Visual Basic passera à la ligne de déclaration de variable. Appuyez sur Ctrl + Maj + F2 ou choisissez Affichage / Dernière position pour ramener le pointeur de votre souris à sa position précédente.

1 Le type Booléen
Vous pouvez utiliser le type de données booléen pour stocker des valeurs booléennes. Les variables booléennes ne peuvent prendre que deux valeurs, True  (Vrai) ou False (Faux). Une variable booléenne occupe deux octets d’espace. La déclaration d’une variable booléenne est la suivante :
Dim ProduitDisponible As Boolean
La variable booléenne, lorsqu’elle est convertie en un autre type de données, renvoie -1 en cas de Vrai et 0 en cas de Faux. En cas de conversion d’une valeur numérique en valeur booléenne, 0 renvoie Faux et tous les autres nombres renvoient Vrai.

2 Le type de données numériques

Ces types sont utilisés pour effectuer des opérations mathématiques telles que l’addition, la soustraction, multiplication, etc. Exemple, calcul du pourcentage, prix de l’action, frais, factures, âge, etc. Dans VBA, il existe 6 types de données numériques :

■ Byte, Integer et Long pour les données entières

■ Single et Double pour les valeurs décimales

■ Currency pour des valeurs monétaires

REMARQUE                                                                                         

Lorsque vous déclarer une variable comme en entier (Long par exemple) et ensuite vous lui transmette un nombre décimal, il n’y a pas d’erreur mais seule la partie entière est conservée

Il y a plus d’une décennie, il était important d’optimiser la mémoire en déclarant au mieux les variables. Mais avec les ordinateurs de plus en plus performants de nos jours, ces considérations n’ont plus lieu d’être. Ainsi vous pouvez utiliser les types Long pour tous les nombre entiers et Double pour tous les nombres décimaux.

3 Le type Date
Vous pouvez utiliser le type de données Date pour stocker une date. Chaque variable Date occupe huit octets chacune. La plage du type de données Date s’étend du 1er janvier 0100 au 31 décembre 9999 et l’heure de 0:00:00 à 23:59:59.
La date doit être placée entre des signes de hachage (#) lorsqu’elle est affectée au type de données Date. Par exemple :

MaDate = # 6/5/01 #

Vous pouvez également spécifier la date littéralement de la même manière. Par exemple:

MaDate = # 6 juin 2001 #

VBA convertit la date spécifiée dans le format précédent en nombre et l’affiche 6/5/2001. Vous pouvez également spécifier l’heure d’une manière similaire.

4 Le type Object

Une variable de type Objet est celle qui représente un objet entier, tel qu’une plage (Range) ou une feuille de calcul (Worksheet). Ces variables sont importantes pour deux raisons.

■ Ils peuvent simplifier considérablement votre code.

■ Ils peuvent accélérer l’exécution de votre code.

Le type de données Object peut contenir une référence à n’importe quel objet.

Il est rarement utilisé cependant, car il est préférable de déclarer les variables comme le type spécifique qu’elles contiendront. Par exemple :

Dim ObjetGenerique As Object
et
Dim ObjetSpecifique As Worksheet

La variable ObjetGenerique peut contenir une référence à tout type d’objet, tandis que la variable ObjetSpecifique peut référencer uniquement un objet Worksheet.

Il peut sembler que l’utilisation du type de données Object est meilleure car elle offre plus de flexibilité, mais ce n’est pas le cas. En effet, l’utilisation du type de données Object est appelée liaison tardive. Le programme ne sait pas à quel type d’objet la variable se référera jusqu’à ce que le programme s’exécute et qu’une référence soit réellement affectée à la variable. Cela ralentit un peu les choses, mais pas de manière significative. Plus important encore, cela rend la fonction de Vérification automatique de la syntaxe de l’éditeur indisponible.
Lorsque vous déclarez une variable en tant que type d’objet spécifique, elle est appelée liaison anticipée. VBA sait de quel type est la variable et, pendant que vous modifiez, peut utiliser la liste automatique pour afficher les propriétés et les méthodes de l’objet. Cela peut être très pratique.

Avec la Vérification automatique de la syntaxe, lorsque vous saisissez le nom d’une variable d’objet suivi d’un point, l’éditeur affiche une liste des propriétés et des méthodes de ce type, parmi lesquelles vous pouvez sélectionner.
Déclarer une variable en tant que type d’objet spécifique n’est pas la même chose que l’initialiser. Voici un exemple :

Dim mafeuille As Worksheet

Après ce code, la variable mafeuille existe et est de type Worksheet, mais elle ne fait référence à rien, elle contient la valeur Nothing. Pour initialiser la variable, il faut lui affecter une référence spécifique. La syntaxe de déclaration et d’attribution est la suivante :

Dim NomDeLaVariable As Objet
Set NomDeLaVariable = referenceObjet

par exemple:

Dim mafeuille As Worksheets
Set mafeuille = Worksheets("Feuil6")

Maintenant, la variable mafeuille fait référence à la feuille de calcul nommée Feuil6. Le mot clé Set doit être utilisé chaque fois que vous affectez une référence d’objet.
Dans la plupart des cas, vous obtenez vos références d’objet à partir de collections ou en utilisant la méthode Add.

Dans certaines situations, cependant, il n’y a pas de collection pertinente et vous devez créer l’objet à l’aide du mot clé New. La syntaxe est:

Set ObjetVariable = New NomObjet

Vous pouvez également combiner la déclaration et l’initialisation en une seule instruction

Dim ObjetVariable As New NomObjet

Pour voir comment les variables de type Object simplifient votre code, examinez la procédure suivante, qui n’utilise pas de variable de type object:

Sub PasDeTypeObjet()
    Worksheets("Feuil3").Range("C4").Value = ELIE
    Worksheets("Feuil3").Range("C4").Font.Size = 16
    Worksheets("Feuil3").Range("C4").Font.Name = "Verdana"
    Worksheets("Feuil3").Range("C4").Font.Bold = True
    Worksheets("Feuil3").Range("C4").Font.Italic = True
End Sub

Commentaires

Cette procédure entre la valeur ELIE dans la cellule C4  de de la feuille Feuil3 sur le classeur actif (Worksheets(“Feuil3”).Range(“C4”).Value = ELIE), applique un certain formatage tel que la taille (Font.Size = 16),  la police (Font.Name = “Verdana”), le gras (Font.Bold = True) et l’italic (Font.Italic = True).

C’est beaucoup de code. Pour rendre votre code plus efficace, vous pouvez condenser la procédure avec une variable de type objet.

Sub AvecTypeObjet()
    Dim maPlage As Range
    Set maPlage = Worksheets("Feuil6").Range("C4")
        maPlage.Value = ELIE
        maPlage.Font.Size = 16
        maPlage.Font.Name = "Verdana"
        maPlage.Font.Bold = True
        maPlage.Font.Italic = True
End Sub

Commentaires

Une fois la variable maPlage déclarée en tant qu’objet Range, l’instruction Set lui attribue un objet.

Les instructions suivantes peuvent ensuite utiliser la référence maPlage plus simple à la place de la longue référence Worksheets(“Feuil6”).Range(“C4”).

5 Le type String (Chaine de caractère)
Si votre variable contiendra toujours du texte, vous pouvez le déclarer de type String. La séquence de caractères affectée à une variable chaîne doit être entourée de guillemets.

Dim maVariable As String
maVariable = " Ceci est une chaîne"

Une variable de type chaîne peut être déclarée comme une chaîne de longueur variable et comme une chaîne de longueur fixe.

Une chaîne est de longueur variable par défaut. La chaîne augmente ou rétrécit en fonction des données qu’elle contient. Si vous ne souhaitez pas que cela se produise, vous pouvez déclarer une chaîne de longueur fixe à l’aide de la syntaxe :

String * taille:

Par exemple :

Dim maVariable As String * 50

Cela force une chaîne à être fixée à 50 caractères. Si votre chaîne est inférieure à 50, elle est remplie d’espaces. S’il est supérieur à 50 caractères, les caractères en excès sont tronqués et perdus.
Notez que VBA n’a qu’une seule opération de chaîne: la concaténation. Il est utilisé pour combiner plusieurs lignes en une seule. L’opération de concaténation est désignée par esperluette (&) ou addition (+). Pour éviter toute confusion, l’opération de concaténation avec le signe & est généralement utilisée. Lorsque vous combinez deux lignes, la deuxième ligne est ajoutée directement à la fin de la première. Le résultat est une chaîne plus grande contenant l’intégralité des deux lignes d’origine.
L’exemple suivant définit la variable x sur «Visual Basic for Applications».

Dim x As String
x = "Visual Basic " & "for Applications"

6 Le type Variant
Le type de données Variant est le type de données par défaut et est affecté à toutes les variables dont le type de données n’est pas déclaré. Cependant, vous pouvez également déclarer explicitement une variable du type de données Variant de la manière suivante:
Dim maVariable As Variant
Les variables déclarées du type de données Variant peuvent contenir des valeurs de chaîne, de date, booléennes ou numériques et peuvent convertir automatiquement les types de données des valeurs qu’elles contiennent. Chaque valeur Variant numérique nécessite 16 octets de mémoire et une valeur Variant chaîne nécessite 22 octets plus le stockage requis pour les caractères. En raison de ses capacités, le type de données Variant occupe une grande quantité de mémoire. Par conséquent, il est recommandé de déclarer explicitement les variables.

7 Type défini par l’utilisateur

Un type défini par l’utilisateur (abrégé UDT) vous permet de créer un seul type de données pouvant représenter plusieurs types de données intégrés. VBA vous permet de créer des types de données définis par l’utilisateur ou personnalisés. Vous créez un type défini par l’utilisateur à l’aide de l’instruction Type. Un type de données défini par l’utilisateur peut faciliter votre travail avec certains types de données. Par exemple, si votre application traite des informations client, vous souhaiterez peut-être créer un type de données défini par l’utilisateur nommé InformationsClients.

Type InformationsClients
    Entreprise As String
    Telephone As Long
    Ville As String
    BoitePostale As Long
    Revenu As Double
End Type

Cela vous permet de définir une seule variable pour accéder à tous les champs.

Vous définissez des types de données personnalisés en haut de votre module, avant toute procédure. Une fois que vous avez créé votre type, utilisez l’instruction Dim pour déclarer une variable de ce type.

Généralement, vous définissez un tableau. Voici un exemple:

Clients dim (1 To 20) As InformationsClients

Chacun des 20 éléments de ce tableau se compose de cinq composants (Entreprise, Telephone, Email, BoitePostale et Revenu). Vous pouvez faire référence à un composant particulier comme suit:

Clients(5).Entreprise = "CESTAD ANALYTICS"
Clients(5).Telephone= "699 07 27 98"
Clients(5).Ville = "Douala"
Clients(5).BoitePostale = 15652
Clients(5).Revenu = 17 598 000

Les types peuvent être très utiles, mais ils ont un certain nombre de limitations:

Vous ne pouvez pas déclarer une nouvelle instance d’un type. Ils doivent tous être déclarés au moment de la conception.

Vous ne pouvez pas valider ou restreindre les valeurs affectées aux différents champs.

Un type est juste une structure de données statique et ne peut avoir aucune action associée.

L’utilisation de classes au lieu de types peut surmonter toutes ces limitations.

8 Connaitre le type de variable
Vous pouvez utiliser la fonction VarType pour connaître le type de données détenues par une variante. Prenons l’exemple suivant :

Sub TestDeVariables()
    prenom = "chancelin"
    MsgBox VarType(prenom)
    AgeChancelin = 33
    MsgBox VarType(AgeChancelin)
End Sub

Commentaires

■ La fonction MsgBox permet d’afficher une boite de message.

■ Ainsi la boîte de message affichera d’abord 8, ce qui signifie qu’il s’agit d’une chaîne. Il affichera ensuite 2, ce qui signifie qu’il s’agit d’un entier, comme le montre la figure suivante.

  

Le tableau suivant montre les valeurs de retour pour des types de données spécifiques.

Type de valeur          Valeur de retour         
0 Variant
1 Null
2 Enteger
3 Long
4 Simple
5 Double
6 Currency
7 Date / Heure
8 String
11 Boolean
17 Byte

Si vous effectuez une opération mathématique sur une variante qui n’est pas une valeur numérique, vous obtiendrez une erreur Type MisMatch. Cela signifie que vous essayez de mettre un type de données dans une variable non configurée pour contenir ce type de données. Dans ce cas, il se peut que vous essayiez d’effectuer une opération mathématique sur une variante contenant une chaîne de texte (String).

9 Fonctions pour texter la valeur d’une variable

 Valeur numérique
Vous pouvez utiliser la fonction IsNumeric pour tester si la valeur d’une variante est un nombre – elle renvoie vrai ou faux.

Sub TestNumeric()
    prenom="chancelin"
    MsgBox IsNumeric(chancelin)
End Sub

Commentaires

■ La fonction MsgBox est utilisé pour afficher une boite de message.

■ Lorsqu’on exécute la macro, on obtient comme résultat « Faux » car la variable «prenom» est un chaine de caractère et non une valeur numérique

 Valeurs de date / heure stockées dans des variantes
Les variables peuvent également contenir des valeurs de date / heure. Il s’agit d’un nombre à virgule flottante: la partie entière représente les jours depuis le 31 décembre 1899 et la partie décimale représente les heures, les minutes et les secondes exprimées en proportion de 24 heures. Par exemple, 37786,75 représente le 14 juin 2003 à 18h00. La différence entre le 31 décembre 1899 et le 14 juin 2003 est de 37 786 jours et 0,75 de 24 heures est de 18 heures.
L’ajout ou la soustraction de nombres ajoute ou soustrait des jours. L’ajout de décimales augmente l’heure de la journée; par exemple, l’ajout de 1/24 ajoute une heure. Il existe un certain nombre de fonctions pour gérer la date et l’heure.
Notez que l’interprétation du jour et du mois dépend des paramètres des options régionales dans le panneau de configuration de Windows. Si vous définissez votre date sur mm / jj / aa dans les options régionales, ce sera l’interprétation par défaut du jour et du mois.
Comme vous pouvez utiliser IsNumeric pour déterminer s’il existe une valeur numérique, vous pouvez utiliser la fonction IsDate pour déterminer s’il existe une valeur de date.

Sub TestDate()
    madate = "01-fév-2002"
    MsgBox IsDate (madate)

End Sub

Cela renverra Vrai.

Valeur vide
Une variante à laquelle aucune variable ne lui a été affectée aura une valeur vide. On utiliser la fonction IsEmpty pour vérifier s’il existe une valeur vide.

MsgBox IsEmpty (MyTest)
Cela renverra True (différent de zéro) car aucune valeur n’a été affectée à temp.

Valeur nulle
Une variante peut contenir une valeur spéciale Null. La valeur Null est utilisée pour indiquer des données inconnues ou manquantes. Les variables ne sont pas définies sur Null sauf si vous écrivez du code pour ce faire. Si vous n’utilisez pas Null dans votre application, vous n’avez pas à vous soucier de Null.

REMARQUE

Null n’est pas égal à 0. C’est une hypothèse simple mais incorrecte à faire lorsque vous commencez à apprendre VBA.
La façon la plus sûre de vérifier une valeur Null dans votre code est d’utiliser IsNull.

10 Valeurs de retour
Les constantes listées dans le tableau suivant envoient un nombre indiquant le type de valeur stockée dans cette variable.

Constante Valeur La description
VbEmpty 0 La variable est vide. Il n’a jamais reçu de valeur.
VbNull 1 Ne contient aucune donnée valide
VbInteger 2 La variable contient une valeur de type integer
VbLong 3 La variable contient une valeur de type Long
VbSingle 4 La variable contient une valeur de type Single
VbDouble 5 La variable contient une valeur de type Double
vbCurrency 6 La variable contient une valeur monétaire
VbDate 7 La variable contient une valeur de type de date
VbString 8 La variable contient un texte
VbObject 9 La variable contient une référence d’objet.
VbError 10 La variable contient un code d’erreur.
VbBoolean 11 La variable contient une valeur booléenne
VbVariant 12 La variable contient une valeur Variante (utilisé uniquement pour les tableaux de variantes)
VbDataObject 13 La variable contient une référence d’objet non-ActiveX.
VbDecimal 14 La variable contient un réel à l’échelle de 96 bits.
VbByte 17 La variable contient une valeur d’ octet.
VbLongLong 20 Entier LongLong (valide sur les plates-formes 64 bits uniquement)
VbUserDefinedType 36 La variable contient une valeur de type défini par l’utilisateur.
VbArray 8192 La variable contient une valeur de tableau. 

 

11 Déclaration de variables encore plus courte
Si vous devenez progressivement plus expérimenté dans la programmation, vous ne voudrez peut-être plus écrire les noms de variables plus longtemps et vous aurez également moins de paperasse pour l’instruction sur le type de données. Jetez un œil au tableau suivant :

En détail   Forme courte
 Dim Client as Integer  Dim Client%
 Dim ClientPrincipal as Long  Dim ClientPrincipal&
 Dim Montant as Currency  Dim Montant@
 Dim InformationClient String Dim InformationClient$

Il existe une abréviation pour chaque type de données répertorié ci-dessus, que vous pouvez utiliser pour raccourcir le code de programmation. Cependant, vous devez vous en tenir aux variables parlantes au moins au début.
Si vous le souhaitez, vous pouvez commencer le nom de la variable par une abréviation, qui fournit déjà des informations sur le type de données de la variable. La variable str_message symbolise clairement une variable du type de données chaîne dans laquelle vous pouvez tamponner des textes. La variable i_VenteJanvier représente une variable de type Integer, dans laquelle vous pouvez gérer des valeurs numériques.

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x