Variables et constantes en VBA

En VBA, comme dans tout autre langage de programmation, les variables et les constantes sont utilisées pour stocker toutes les valeurs. Comme son nom l'indique, les variables peuvent changer, tandis que les constantes stockent des valeurs fixes.

Par exemple, une constante Pi stocke la valeur 3,14159265… Le nombre "Pi" ne changera pas pendant l'exécution du programme, mais il est toujours plus pratique de stocker une telle valeur en tant que constante.

En même temps, on peut utiliser la variable sVAT_Taux pour stocker le taux de TVA sur les biens achetés. Valeur variable sVAT_Taux peut varier selon le produit acheté.

Types de données

Toutes les variables et constantes sont d'un type de données particulier. Le tableau ci-dessous répertorie les types de données utilisés dans VBA avec une description et une plage de valeurs possibles :

Type de données TailleDescriptionGamme de valeurs
OctetOctets 1Entiers positifs ; souvent utilisé pour les données binairesà partir de 0 255
BooleanOctets 2Peut être vrai ou fauxVrai ou faux
EntierOctets 2Nombres entiers (pas de partie fractionnaire)de -32 à +768
LocationOctets 4Grands entiers (pas de partie fractionnaire)от -2 147 483 648 до +2 147 483 647
uniqueOctets 4Nombre à virgule flottante simple précisionde -3.4e38 à +3.4e38
DoubleOctets 8Nombre à virgule flottante double précisionde -1.8e308 à +1.8e308
DeviseOctets 8Nombre à virgule flottante, avec un nombre fixe de décimalesот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
DateOctets 8Date et heure – Les données de type Date sont représentées par un nombre à virgule flottante. La partie entière de ce nombre exprime la date et la partie fractionnaire exprime l'heure.du 1er janvier 100 au 31 décembre 9999
ObjetOctets 4Référence de l'objetToute référence d'objet
ChaînechangeJeu de caractères. Le type String peut être de longueur fixe ou variable. Plus couramment utilisé avec une longueur variableLongueur fixe – jusqu'à environ 65 caractères. Longueur variable - jusqu'à environ 500 milliards de caractères
VariantechangePeut contenir une date, un flottant ou une chaîne de caractères. Ce type est utilisé dans les cas où l'on ne sait pas à l'avance quel type de données sera saisi.Nombre – Double, chaîne – Chaîne

Évidemment, en utilisant le tableau ci-dessus et en choisissant le bon type de données, vous pouvez utiliser la mémoire de manière plus économique (par exemple, choisissez le type de données Entier plutôt ; Location or unique plutôt ; Double). Cependant, lorsque vous utilisez des types de données plus compacts, vous devez faire attention à ce que votre code n'essaie pas d'y insérer des valeurs disproportionnées.

Déclaration de variables et de constantes

Note du traducteur : En parlant de variables dans VBA, il convient de mentionner un autre point très important. Si nous déclarons une variable mais ne lui attribuons aucune valeur, alors elle est initialisée avec une valeur par défaut :

• les chaînes de texte sont initialisées avec des chaînes vides ;

• nombres — valeur 0 ;

• variables de type Boolean - Faux;

• dates – 30 décembre 1899.

Avant qu'une variable ou une constante puisse être utilisée, elle doit être déclarée. Pour ce faire, ajoutez la simple ligne de code suivante à la macro :

Dim Имя_Переменной As Тип_Данных

Dans la ligne de code ci-dessus Nom de variable est le nom de la variable qui sera utilisée dans le code, et Type de données est l'un des types de données du tableau donné un peu plus haut dans cet article. Par exemple:

Dim sVAT_Rate As Single Dim i As Integer

Les constantes sont déclarées de la même manière, mais lors de la déclaration de constantes, leur valeur doit être immédiatement indiquée. Par exemple, comme ceci :

Const iMaxCount = 5000 Const iMaxScore = 100

Il n'est pas nécessaire de déclarer des variables dans Excel. Par défaut, toutes les variables saisies mais non déclarées dans Excel auront le type Variante et pourra accepter les valeurs numériques et textuelles.

Ainsi, le programmeur peut utiliser la nouvelle variable à tout moment (même si elle n'a pas été déclarée), et Excel la traitera comme une variable de type Variante. Cependant, il y a plusieurs raisons pour lesquelles cela ne devrait pas être fait :

  1. Utilisation de la mémoire et vitesse de calcul. Si vous ne déclarez pas une variable avec une indication du type de données, alors par défaut, elle sera définie sur le type Variante. Ce type de données utilise plus de mémoire que les autres types de données. Quelques octets supplémentaires par variable peuvent sembler peu, mais en pratique, les programmes peuvent avoir des milliers de variables (en particulier lorsque vous travaillez avec des tableaux). Par conséquent, la mémoire supplémentaire utilisée par des variables telles que Variante, par rapport aux variables de type Entier or unique, peut représenter un montant important. De plus, les opérations avec des variables de type Variante sont exécutées beaucoup plus lentement qu'avec des variables d'autres types, respectivement un millier de variables supplémentaires de type Variante peut ralentir considérablement les calculs.
  2. Prévention des fautes de frappe dans les noms de variables. Si toutes les variables sont déclarées, alors l'instruction VBA peut être utilisée - Option explicite (nous en reparlerons plus tard) afin d'identifier toutes les variables non déclarées. Cela élimine l'apparition d'une erreur dans le programme à la suite d'un nom de variable mal écrit. Par exemple, en utilisant une variable nommée sVAT_Taux, vous pouvez faire une faute de frappe et, en attribuant une valeur à cette variable, écrire : « VATRate = 0,175 ». On s'attend à ce qu'à partir de maintenant, la variable sVAT_Taux devrait contenir la valeur 0,175 - mais bien sûr ce n'est pas le cas. Si le mode de déclaration obligatoire de toutes les variables utilisées est activé, alors le compilateur VBA indiquera immédiatement une erreur, puisqu'il ne trouvera pas la variable Taux de TVA parmi celles annoncées.
  3. Mise en évidence des valeurs qui ne correspondent pas au type déclaré d'une variable. Si vous déclarez une variable d'un certain type et essayez de lui affecter des données d'un type différent, vous obtiendrez une erreur qui, si elle n'est pas corrigée, peut provoquer le plantage du programme. À première vue, cela peut sembler être une bonne raison de ne pas déclarer de variables, mais en fait, qu'avant il s'avère qu'une des variables a reçu la mauvaise donnée qu'elle était censée recevoir – tant mieux ! Sinon, si le programme continue de s'exécuter, les résultats peuvent être incorrects et inattendus, et il sera beaucoup plus difficile de trouver la cause des erreurs. Il est également possible que la macro soit exécutée "avec succès". En conséquence, l'erreur passera inaperçue et le travail se poursuivra avec des données incorrectes !

À cet égard, il est souhaitable de détecter un type de données incorrect et de corriger ces erreurs dans le code le plus tôt possible. Pour ces raisons, il est recommandé de déclarer toutes les variables lors de l'écriture d'une macro VBA.

Option explicite

Opérateur Option explicite provoque la déclaration de toutes les variables qui seront utilisées dans le code VBA et signale toutes les variables non déclarées comme des erreurs lors de la compilation (avant le début de l'exécution du code). L'application de cet opérateur n'est pas difficile - écrivez simplement cette ligne tout en haut du fichier VBA :

Option Explicit

Si vous voulez toujours insérer Option explicite en haut de chaque nouveau module VBA créé, cela peut être fait automatiquement. Pour ce faire, vous devez activer l'option Exiger une déclaration de variable dans les paramètres de l'éditeur VBA.

Ceci est fait comme ceci:

  • Dans le menu de Visual Basic Editor, cliquez sur les outils > Options
  • Dans la boîte de dialogue qui apparaît, ouvrez l'onglet Éditeur
  • Cochez la case Exiger une déclaration de variable et appuyez sur OK

Lorsqu'elle est activée, la chaîne Option explicite sera automatiquement inséré au début de chaque nouveau module créé.

Portée des variables et des constantes

Chaque variable ou constante déclarée a sa propre portée limitée, c'est-à-dire une partie limitée du programme dans laquelle cette variable existe. La portée dépend de l'endroit où la déclaration de la variable ou de la constante a été faite. Prenons, par exemple, la variable sVAT_Taux, qui est utilisé dans la fonction Coût total. Le tableau suivant présente deux options pour la portée des variables sVAT_Tauxdéclarés à deux positions différentes dans le module :

Option Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function
Si la variable sVAT_Taux déclarée au tout début du module, alors la portée de cette variable sera l'ensemble du module (c'est-à-dire la variable sVAT_Taux seront reconnus par toutes les procédures de ce module).

Donc, si dans la fonction Coût total variable sVAT_Taux se verra attribuer une valeur, la prochaine fonction exécutée dans le même module utilisera la variable sVAT_Taux avec le même sens.

Cependant, si une fonction située dans un autre module est appelée, alors pour elle la variable sVAT_Taux ne sera pas connu.

Option Explicit Function Total_Cost() As Double Dim sVAT_Rate As Single ... End Function
Si la variable sVAT_Taux déclaré au début de la fonction Coût total, alors sa portée sera limitée uniquement à cette fonction (c'est-à-dire à l'intérieur de la fonction Coût total, vous pouvez utiliser la variable sVAT_Taux, mais pas à l'extérieur).

Lorsque vous essayez d'utiliser sVAT_Taux dans une autre procédure, le compilateur VBA signalera une erreur car cette variable n'a pas été déclarée en dehors de la fonction Coût total (à condition que l'opérateur soit utilisé Option explicite).

Dans l'exemple ci-dessus, la variable est déclarée au niveau du module avec le mot clé Faible. Cependant, il peut être nécessaire que les variables déclarées puissent être utilisées dans d'autres modules. Dans ce cas, déclarer une variable au lieu d'un mot-clé Faible le mot clé doit être utilisé public.

Au fait, pour déclarer une variable au niveau du module, à la place du mot clé Faible mot-clé peut être utilisé Chef, ce qui indique que cette variable est destinée à être utilisée uniquement dans le module actuel.

Vous pouvez également utiliser des mots clés pour déclarer des constantes. public и Chef, mais pas à la place du mot-clé const, avec.

Les exemples suivants montrent l'utilisation de mots clés public и Chef appliqué aux variables et aux constantes.

Option Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
Dans cet exemple, le mot clé public utilisé pour déclarer une variable sVAT_Taux et constantes iMax_Count. La portée des éléments ainsi déclarés sera l'ensemble du projet en cours.

Cela signifie que sVAT_Taux и iMax_Count sera disponible dans n'importe quel module de projet.

Option Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
Dans cet exemple, pour déclarer une variable sVAT_Taux et constantes iMax_Count mot clé utilisé Chef. La portée de ces éléments est le module actuel.

Cela signifie que sVAT_Taux и iMax_Count sera disponible dans toutes les procédures du module actuel, mais ne sera pas disponible pour les procédures des autres modules.

Soyez sympa! Laissez un commentaire