Comprendre les types de données Excel VBA (variables et constantes)

Dans Excel VBA, vous devrez souvent utiliser des variables et des constantes.

Lorsque vous travaillez avec VBA, une variable est un emplacement dans la mémoire de votre ordinateur où vous pouvez stocker des données. Le type de données que vous pouvez stocker dans une variable dépend du type de données de la variable.

Par exemple, si vous souhaitez stocker des entiers dans une variable, votre type de données serait « Integer » et si vous souhaitez stocker du texte, votre type de données serait « String ».

Plus d'informations sur les types de données plus loin dans ce didacticiel.

Alors que la valeur d'une variable change lorsque le code est en cours, une constante contient une valeur qui ne change jamais. En tant que bonne pratique de codage, vous devez définir le type de données à la fois - variable et constant.

Pourquoi utiliser des variables en VBA ?

Lorsque vous codez en VBA, vous avez besoin de variables que vous pouvez utiliser pour contenir une valeur.

L'avantage d'utiliser une variable est que vous pouvez modifier la valeur de la variable dans le code et continuer à l'utiliser dans le code.

Par exemple, ci-dessous est un code qui ajoute les 10 premiers nombres positifs, puis affiche le résultat dans une boîte de message :

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k as Integer For i = 1 To 10 k = k + i Next i MsgBox k End Sub

Il y a trois variables dans le code ci-dessus - Var, je, et k.

Le code ci-dessus utilise une boucle For Next où ces trois variables sont modifiées au fur et à mesure que les boucles sont terminées.

L'utilité d'une variable réside dans le fait qu'elle peut être modifiée pendant que votre code est en cours.

Voici quelques règles à garder à l'esprit lorsque vous nommez les variables en VBA :

  1. Vous pouvez utiliser des alphabets, des nombres et des signes de ponctuation, mais le premier nombre doit être un alphabet.
  2. Vous ne pouvez pas utiliser d'espace ou de point dans le nom de la variable. Cependant, vous pouvez utiliser un caractère de soulignement pour rendre les noms de variables plus lisibles (comme Interest_Rate)
  3. Vous ne pouvez pas utiliser de caractères spéciaux (#, $, %, & ou !) dans les noms de variables
  4. VBA ne fait pas la distinction entre la casse dans le nom de la variable. Ainsi, « InterestRate » et « interestrate » sont les mêmes pour VBA. Vous pouvez utiliser la casse mixte pour rendre les variables plus lisibles.
  5. VBA a des noms réservés que vous pouvez utiliser pour un nom de variable. Par exemple, vous ne pouvez pas utiliser le mot « Next » comme nom de variable, car il s'agit d'un nom réservé pour la boucle For Next.
  6. Votre nom de variable peut contenir jusqu'à 254 caractères.

Type de données des variables

Pour tirer le meilleur parti des variables, il est recommandé de spécifier le type de données de la variable.

Le type de données que vous affectez à une variable dépendra du type de données que vous souhaitez que cette variable contienne.

Vous trouverez ci-dessous un tableau qui montre tous les types de données disponibles que vous pouvez utiliser dans Excel VBA :

Type de données Octets utilisés Plage de valeurs
Octet 1 octet 0 à 255
booléen 2 octets Vrai ou faux
Entier 2 octets -32 768 à 32 767
Long (entier long) 4 octets -2 147 483 648 à 2 147 483 647
Seul 4 octets -3.402823E38 à -1.401298E-45 pour les valeurs négatives; 1.401298E-45 à 3.402823E38 pour les valeurs positives
Double 8 octets -1.79769313486231E308 à -4.94065645841247E-324 pour les valeurs négatives; 4.94065645841247E-324 à 1.79769313486232E308 pour les valeurs positives
Devise 8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807
Décimal 14 octets +/-79 228 162 514 264 337 593 543 950 335 sans virgule;+/-7.9228162514264337593543950335 avec 28 chiffres à droite de la virgule
Date 8 octets 1er janvier 100 au 31 décembre 9999
Objet 4 octets Toute référence d'objet
Chaîne (longueur variable) 10 octets + longueur de chaîne 0 à environ 2 milliards
Chaîne (longueur fixe) Longueur de chaîne 1 à environ 65 400
Variante (avec numéros) 16 octets Toute valeur numérique jusqu'à la plage d'un Double
Variante (avec caractères) 22 octets + longueur de chaîne Même plage que pour la chaîne de longueur variable
Défini par l'utilisateur Varie La plage de chaque élément est la même que la plage de son type de données.

Lorsque vous spécifiez un type de données pour une variable dans votre code, il indique à VBA comment stocker cette variable et combien d'espace lui allouer.

Par exemple, si vous devez utiliser une variable destinée à contenir le numéro du mois, vous pouvez utiliser le type de données BYTE (qui peut accepter des valeurs de 0 à 255). Étant donné que le numéro du mois ne sera pas supérieur à 12, cela fonctionnera correctement et réservera également moins de mémoire pour cette variable.

Au contraire, si vous avez besoin d'une variable pour stocker les numéros de ligne dans Excel, vous devez utiliser un type de données pouvant accueillir un nombre jusqu'à 1048756. Il est donc préférable d'utiliser le type de données Long.

Déclaration de types de données variables

En tant que bonne pratique de codage, vous devez déclarer le type de données des variables (ou constantes) lors de l'écriture du code. Cela garantit que VBA n'alloue que la mémoire spécifiée à la variable, ce qui peut accélérer l'exécution de votre code.

Vous trouverez ci-dessous un exemple où j'ai déclaré différents types de données à différentes variables :

Sub DeclaringVariables() Dim X As Integer Dim Email As String Dim FirstName As String Dim RowCount As Long Dim TodayDate As Date End Sub

Pour déclarer un type de données variable, vous devez utiliser l'instruction DIM (abréviation de Dimension).

Dans 'Dim X en tant qu'entier', j'ai déclaré la variable X comme type de données Integer.

Maintenant, lorsque je l'utilise dans mon code, VBA saurait que X ne peut contenir que le type de données entier.

Si j'essaie de lui attribuer une valeur qui n'est pas un entier, j'obtiendrai une erreur (comme indiqué ci-dessous):

Remarque : Vous pouvez également choisir de ne pas déclarer le type de données, auquel cas VBA considère automatiquement la variable du type de données variant. Un type de données variant peut s'adapter à n'importe quel type de données. Bien que cela puisse sembler pratique, ce n'est pas une bonne pratique d'utiliser un type de données variant. Il a tendance à prendre plus de mémoire et peut ralentir l'exécution de votre code VBA.

Rendre la déclaration de variable obligatoire (option explicite)

Bien que vous puissiez coder sans jamais déclarer de variables, c'est une bonne pratique de le faire.

En plus d'économiser de la mémoire et de rendre votre code plus efficace, la déclaration de variables présente un autre avantage majeur : elle permet de piéger les erreurs causées par des noms de variables mal orthographiés.

Pour vous assurer que vous êtes obligé de déclarer des variables, ajoutez la ligne suivante en haut de votre module.

Option Explicite

Lorsque vous ajoutez 'Option Explicit', vous devrez déclarer toutes les variables avant d'exécuter le code. S'il y a une variable qui n'a pas été déclarée, VBA affichera une erreur.

Il y a un énorme avantage à utiliser Option Explicit.

Parfois, vous pouvez finir par faire une erreur de frappe et entrer un nom de variable qui est incorrect.

Normalement, VBA n'a aucun moyen de savoir si c'est une erreur ou si c'est intentionnel. Cependant, lorsque vous utilisez « Option explicite », VBA verra le nom de la variable mal orthographié comme une nouvelle variable qui n'a pas été déclarée et affichera une erreur. Cela vous aidera à identifier ces noms de variables mal orthographiés, qui peuvent être assez difficiles à repérer dans un code long.

Vous trouverez ci-dessous un exemple où l'utilisation de « Option explicite » identifie l'erreur (qui n'aurait pas pu être piégée si je n'avais pas utilisé « Option explicite »)

Sub CommissionCalc() Dim CommissionRate As Double If Range ("A1").Value > 10000 Then CommissionRate = 0.1 Else CommissionRtae = 0.05 End If MsgBox "Total Commission: " & Range ("A1").Value * CommissionRate End Sub

Notez que j'ai mal orthographié le mot « CommissionRate » une fois dans ce code.

Si je n'utilise pas Option Explicit, ce code s'exécutera et me donnera la mauvaise valeur de commission totale (au cas où la valeur dans la cellule A1 est inférieure à 10000).

Mais si j'utilise Option Explicit en haut du module, cela ne me permettra pas d'exécuter ce code avant de corriger le mot mal orthographié ou de le déclarer comme une autre variable. Il affichera une erreur comme indiqué ci-dessous :

Bien que vous puissiez insérer la ligne « Option explicite » à chaque fois que vous codez, voici les étapes pour la faire apparaître par défaut :

  1. Dans la barre d'outils de l'éditeur VB, cliquez sur Outils.
  2. Cliquez sur Options.
  3. Dans la boîte de dialogue Options, cliquez sur l'onglet Éditeur.
  4. Cochez l'option - « Exiger une déclaration de variable ».
  5. Cliquez sur OK.

Une fois que vous avez activé cette option, chaque fois que vous ouvrez un nouveau module, VBA y ajoute automatiquement la ligne « Option explicite ».

Remarque : Cette option n'aura d'impact que sur les modules que vous créez une fois cette option activée. Tous les modules existants ne sont pas affectés.

Portée des variables

Jusqu'à présent, nous avons vu comment déclarer une variable et lui affecter des types de données.

Dans cette section, je couvrirai la portée des variables et comment vous pouvez déclarer une variable à utiliser dans un sous-programme uniquement, dans un module entier ou dans tous les modules.

La portée d'une variable détermine où la variable peut être utilisée dans VBA,

Il existe trois façons de définir la portée d'une variable dans Excel VBA :

  1. Dans un seul sous-programme (Variables locales)
  2. Dans un module (variables au niveau du module)
  3. Dans tous les modules (Variables publiques)

Regardons chacun d'eux en détail.

Dans un seul sous-programme (variables locales)

Lorsque vous déclarez une variable dans un sous-programme/procédure, cette variable n'est disponible que pour ce sous-programme.

Vous ne pouvez pas l'utiliser dans d'autres sous-programmes du module.

Dès que le sous-programme se termine, la variable est supprimée et la mémoire utilisée par elle est libérée.

Dans l'exemple ci-dessous, les variables sont déclarées dans le sous-programme et seraient supprimées à la fin de ce sous-programme.

Dans un module (variables au niveau du module)

Lorsque vous souhaitez qu'une variable soit disponible pour toutes les procédures d'un module, vous devez la déclarer en haut du module (et non dans un sous-programme).

Une fois que vous l'avez déclarée en haut du module, vous pouvez utiliser cette variable dans toutes les procédures de ce module.

Dans l'exemple ci-dessus, la variable « i » est déclarée en haut du module et est disponible pour être utilisée par tous les modules.

Notez que lorsque le sous-programme se termine, les variables de niveau module ne sont pas supprimées (elle conserve sa valeur).

Ci-dessous est un exemple, où j'ai deux codes. Lorsque j'exécute la première procédure, puis la seconde, la valeur de "i" devient 30 (car elle porte la valeur 10 de la première procédure)

Dans tous les modules (variables publiques)

Si vous souhaitez qu'une variable soit disponible dans toutes les procédures du classeur, vous devez la déclarer avec le mot clé Public (au lieu de DIM).

La ligne de code ci-dessous en haut du module rendrait la variable « CommissionRate » disponible dans tous les modules du classeur.

 Commission publiqueTaux du double

Vous pouvez insérer la déclaration de variable (à l'aide du mot-clé Public), dans n'importe quel module (en haut avant toute procédure).

Variables statiques (qui conservent la valeur)

Lorsque vous travaillez avec des variables locales, dès la fin de la procédure, la variable perdrait sa valeur et serait supprimée de la mémoire de VBA.

Si vous souhaitez que la variable conserve la valeur, vous devez utiliser le Statique mot-clé.

Permettez-moi d'abord de vous montrer ce qui se passe dans un cas normal.

Dans le code ci-dessous, lorsque j'exécute la procédure plusieurs fois, la valeur 10 sera affichée à chaque fois.

Sub Procedure1() Dim i As Integer i = i + 10 MsgBox i End Sub

Maintenant, si j'utilise le mot-clé Static au lieu de DIM et que j'exécute la procédure plusieurs fois, elle continuera à afficher les valeurs par incréments de 10. Cela se produit lorsque la variable « i » conserve sa valeur et l'utilise dans le calcul.

Sub Procedure1() Statique i As Integer i = i + 10 MsgBox i End Sub

Déclaration de constantes dans Excel VBA

Bien que les variables puissent changer pendant l'exécution du code, si vous souhaitez avoir des valeurs fixes, vous pouvez utiliser des constantes.

Une constante vous permet d'attribuer une valeur à une chaîne nommée que vous pouvez utiliser dans votre code.

L'avantage d'utiliser une constante est qu'elle facilite l'écriture et la compréhension du code, et vous permet également de contrôler toutes les valeurs fixes à partir d'un seul endroit.

Par exemple, si vous calculez des commissions et que le taux de commission est de 10 %, vous pouvez créer une constante (CommissionRate) et lui affecter la valeur 0,1.

À l'avenir, si le taux de commission change, il vous suffit d'effectuer la modification à un endroit au lieu de la modifier manuellement dans le code partout.

Vous trouverez ci-dessous un exemple de code où j'ai attribué une valeur à la constante :

Sub CalculateCommission() Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range("A1") * CommissionRate MsgBox CommissionValue End Sub

La ligne suivante est utilisée pour déclarer la constante :

Taux de commission const en tant que double = 0,1

Lorsque vous déclarez des constantes, vous devez commencer par le mot-clé 'Const', suivi du nom de la constante.

Notez que j'ai spécifié le type de données de la constante comme Double dans cet exemple. Encore une fois, c'est une bonne pratique de spécifier le type de données pour que votre code s'exécute plus rapidement et soit plus efficace.

Si vous ne déclarez pas le type de données, il sera considéré comme un type de données variant.

Tout comme les variables, les constantes peuvent également avoir une portée en fonction de l'endroit et de la manière dont elles sont déclarées :

  1. Dans un seul sous-programme (Constantes locales): Ceux-ci sont disponibles dans la sous-routine/procédure dans laquelle ils sont déclarés. À la fin de la procédure, ces constantes sont supprimées de la mémoire du système.
  2. Dans un module (constantes au niveau du module): Ceux-ci sont déclarés en haut du module (avant toute procédure). Ceux-ci sont disponibles pour toutes les procédures du module.
  3. Dans tous les modules (Constantes publiques): Ceux-ci sont déclarés à l'aide du mot-clé ‘Public’, en haut de tout module (avant toute procédure). Ceux-ci sont disponibles pour toutes les procédures dans tous les modules.

Vous aimerez peut-être aussi les didacticiels VBA suivants :

  • Comment enregistrer une macro dans Excel
  • Travailler avec des cellules et des plages dans Excel VBA
  • Travailler avec des feuilles de calcul à l'aide d'Excel VBA
  • Travailler avec des classeurs dans Excel VBA
  • Événements VBA
  • Boucles Excel VBA
  • Comment exécuter une macro dans Excel
  • If Then Else Statement dans Excel VBA.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave