Focus sur les variables en VBA [#05 FORMATION EXCEL VBA COMPLETE]

Comme nous l’avons vu la semaine dernière, dès lors que nous souhaitons réaliser des opérations et des calculs, en VBA comme dans n’importe quel autre langage de programmation, nous allons devoir utiliser une variable. Voici dans ce chapitre une présentation des variables en VBA, ainsi qu’une description de leur fonctionnement.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

 

 

Tutoriel Vidéo

Vidéo 1 : Focus sur les variables de VBA

Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !

Vidéo 2 : Benchmark des types de variables VBA

Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !

 

Vidéo 3 : Comprendre la portée des variables en variables VBA

Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !

 

1. Qu’est-ce qu’une variable ?

Pour réaliser des calculs dans un programme, il est nécessaire d’enregistrer des informations directement dans la mémoire de l’ordinateur.

Ces informations sont enregistrées à un endroit bien précis et identifiées par un nom, ce qui permettra de les retrouver facilement par la suite.

Cet espace de stockage alloué et que l’on retrouve à partir de son nom est ce que l’on appelle une variable :

Sub lesVariables() 
    maVariable = 1 
End Sub

Ici, nous avons une variable qui porte le nom explicite de « maVariable » et à laquelle nous donnons pour valeur « 1 », grâce au signe égal « = ».

En VBA, les variables sont dites dynamiques, c’est-à-dire qu’elles peuvent changer de valeur à tout moment :

Sub lesVariables() 
    maVariable = 1
    maVariable = 2
End Sub 

Ici, cette même variable « maVariable », à laquelle nous avions affecté la valeur « 1 » prend juste après comme valeur « 2 ».

 

2. Déclarons nos variables !

 

   2.1. Comment déclarer une variable ?

 

Dans l’exemple vu dans au-dessus, nous ne nous sommes pas embêtés à instancier la variable, nous avons juste demandé à Excel de lui affecter une valeur.

En réalité, Excel s’est quand même occupé de cette tâche à notre place, mais sans se soucier de réellement optimiser le code VBA.

Indirectement, voici la ligne ajouté par Excel à notre code pour déclarer la variable :

Sub lesVariables()
 Dim maVariable As Variant
 maVariable = 1
 maVariable = 2
End Sub

Dans ce code, nous retrouvons :

  • Dim : Instruction qui permet d’ajouter une variable dans la mémoire de l’application (nous verrons dans un chapitre bonus que nous pouvons également utiliser les instructions Public et Static)
  • maVariable : il s’agit du nom de la variable que nous avons choisi nous-même d’utiliser
  • As : Mot-clé qui permet de spécifier le type de la variable
  • Variant : Type affecté par Excel à la variable. Nous verrons juste après dans la troisième partie de ce chapitre que le type Variant n’est absolument pas optimisé, il a pour vocation de prendre n’importe quel type de données

Aussi, plutôt de laisser Excel agir en électron libre, nous pouvons (et devons lorsque l’application commence à prendre de l’envergue) déclarer nous-même cette variable !

Pour cela, nous utilisons la même démarche qu’Excel, mais en choisissant un typage optimisé :

Sub lesVariables()
 Dim maVariable As Integer
 maVariable = 1
 maVariable = 2
End Sub

Nous verrons juste après à quoi correspond le type de variable Integer.

 

   2.2. Quand déclarer une variable ?

 

Quand créer une variable ? À cette question, nous retrouvons deux écoles :

  • Soit créer la variable au moment où le besoin s’en fait sentir dans le déroulement de la procédure,
  • Soit créer toutes les variables en début de procédure afin de les retrouvées listées toutes ensembles,
Sub declarationAuFilDeLaProcedure()
    Dim maVariable1 As Integer
    maVariable1 = 1
    Dim maVariable2 As Integer
    maVariable2 = maVariable1 + 1
End Sub
 
Sub declarationAuDebutDeLaProcedure()
    Dim maVariable1 As Integer
    Dim maVariable2 As Integer
    maVariable1 = 1
    maVariable2 = maVariable1 + 1
End Sub 

En réalité, il existe une troisième méthode, qui est finalement celle que j’utilise sans même m’en rendre compte et qui est un mélange des deux précédentes : sur le principe les variables sont déclarées en début de procédure, à l’exception des variables qui n’ont qu’une durée de vie limité (par exemple une variable utilisée dans une boucle).

 

3. Les types de variables

 

   3.1. Les principaux types

 

Le langage VBA est dit « typé ». C’est-à-dire que toutes les variables ne vont pas forcément avoir mêmes informations à traiter.

Certaines variables vont stocker du texte saisi entre guillemets ("ceci est un texte"), d’autres un nombre entier (12), d’autres un nombre décimal (12,48).

Voici une synthèse des principaux types de variables que nous allons utiliser dans nos application VBA :

Type de données

Description

Mémoire utile (en octets)

Valeurs possibles

Byte

Un octet

1

 

0 à 255

String

Chaîne de caractères (texte)

1 / caractère

Nombre de caractères variable

Boolean

VRAI ou FAUX

2

 

True ou False

Integer

Nombre entier

2

 

-32 768 à 32 767

Long

Nombre entier étendu

4

 

-2 147 483 648 à 2 147 483 647

Single

Nombre décimal (pas de zéro absolu)

4

 

-3,402823E38 à -1,401298E-45 et de 1,401298E-45 à 3,402823E38

Double

Un nombre pouvant contenir une partie décimale. La valeur peut être une approximation de la valeur assignée.

8

 

-1,79769313486231E308 à -4,94065645841247E-324 et de 4,94065645841247E-324 à 1,79769313486232E308

Currency

Valeur monétaire à quatre décimales

8

 

-922 337 203 685 477,5808 à 922 337 203 685 477,5807

Date

Une date et une heure

8

 

1er janvier 100 au 31 décembre 9999

Object

Création d'un objet

4

 

Objet Object

Variant

Type de données variables, en fonction du contexte (une même variable de type Variant peut être utilisée pour stocker du texte, puis un nombre)

Variable

Tout type de données

 

Dans le cadre d’une optimisation des ressources allouées, l’objectif va alors être de choisir le type de données qui correspond le mieux à l’utilisation qui va être faite de la variable, tout en utilisant le moins de ressources mémoire possible.

Malgré ce tableau, vous ne savez pas quel type choisir ? Ou même si une variable peut être amenée à changer de type ? Pas de problème, le type Variant permet de remplacer tous les autres types.

C’est d’ailleurs le type par défaut qui sera affecté à une variable dont le type n’est pas précisé.

Mais évidemment, ce type de données occupe une place plus importante dans la mémoire et pourrait une cause de ralentissements sur de grosses applications composées de nombreuses variables de ce type.

Comparer les vitesses d’exécutions de chaque type de variables est un vaste sujet, que nous allons justement voir dès à présent avec la mise en place d'un benchmarking destiné à comparer les vitesses d'execution des différents types de variables.

 

   3.2. Mesurer les vitesses d'executions

 

Un outil de benchmarking permet d’effectuer des mesures qui permettent de comparer plusieurs éléments les uns avec les autres.

Excel formation - VBA051 Benckmark des types de variables VBA - 01

L’idée est donc d’effectuer plusieurs fois une même opération en modifiant un seul élément, afin de réaliser des mesures et d’en tirer des conclusions.

 

Excel formation - VBA051 Benckmark des types de variables VBA - 02

 

   3.3. Mesurer quoi ?

 

Dans cet article, ce qui va nous intéresser c’est de savoir s’il est vraiment nécessaire de déclarer les variables dans une macro VBA, ou si l’on peut laisser à Excel le soin de gérer les typages de variables par lui-même, sachant qu’il ne va pas s’embêter à optimiser le code, mais au contraire d’aller au plus simple en utilisant le type Variant.

Pour rappel, le type d’une variable permet de spécifier l’usage que nous allons faire de celle-ci, afin d’allouer les bonnes ressources. Le type Variant a faculté de ne pas être figé, et tel un caméléon peut évoluer au fil du temps afin de s’adapter à son environnement, et donc des usages fait de cette variable.

Excel formation - VBA051 Benckmark des types de variables VBA - 03

Une variable ainsi typée pourra ainsi permettre de manipuler du texte, des nombres entiers, des dates,… mais le revers de la médaille c’est que plus une variable est versatile, et plus celle-ci va demander de ressources pour être utilisée. Du moins en théorie, et c’est ce que nous allons tenter de démont(r)er.

 

   3.4. Mise en place

 

Évidemment, pour évaluer les temps de réalisation d’une opération en VBA, il est nécessaire de mettre en place une macro développée elle-même en… VBA !

Celle-ci va être simple, et va consister à utiliser des variables pour effectuer des opérations très simple… 100 millions de fois !

 

 Sub testTypeNonDeclare()
    Dim heureDebut As Single, duree As Single
    Dim i As Long
    
    ' Enregistrement de l'heure de début
    heureDebut = Timer
    
    For i = 1 To 100000000
        a = 1
        b = a + 1
        a = a + b
        b = a * b
    Next
    
    ' Inscription de l'heure de fin
    duree = Timer - heureDebut
    Sheets("05.1-Les variables").[b7].Value =
 duree End Sub 

 

Dans cet exemple, les variables a et b n’ont tout simplement pas été déclarées (pour rappel cela revient à les typer en tant que Variant).

Nous enregistrons en début de procédure l’heure exacte dans une variable qui porte le nom de heureDebut grâce à l’instruction Timer qui retourne le nombre de secondes écoulées depuis minuit (cette variable est déclarée, seules les deux variables utilisées dans le calcul vont voir leur type évoluer).

En fin de procédure, nous inscrivons dans la feuille de calcul le temps nécessaire pour réaliser les 100 millions de calculs en réalisant une simple soustraction du Timer actuel auquel nous retirons celui du début (variable heureDebut).

Note : suivant que vous soyez sous PC ou Macintosh, le résultat retourné par l’instruction Timer sera différent. Les tests de cet article sont effectués sous Windows 10

Enfin, nous allons dupliquer ce test, en déclarant cette fois-ci les variables en fonction des différents types possibles :

 

 …
Sub testTypeDouble()
    Dim heureDebut As Single, duree As Single
    Dim i As Long
    Dim a As Double, b As Double
    
    ' Enregistrement de l'heure de début
    heureDebut = Timer
    
    For i = 1 To 100000000
        a = 1
        b = a + 1
        a = a + b
        b = a * b
    Next
    
    ' Inscription de l'heure de fin
    duree = Timer - heureDebut
    Sheets("05.1-Les variables").[b8].Value =
 duree
End Sub 
…

 

   3.5. Tests de performance en fonction du type de variable

 

Voici une synthèse des résultats obtenus, dans laquelle nous retrouvons les délais requis pour réaliser 100 millions de fois la série de calculs que nous venons de voir :

Excel formation - VBA051 Benckmark des types de variables VBA - 04

Sur ces résultats, nous pouvons tirer un certain nombre de conclusions :

  • Sans grande surprise, ne pas définir le type d’une variable (et donc laisser à Excel le soin de lui appliquer le type Variant) sera ce qui demande le plus de temps pour traiter l’information,
  • Typer une variable en Double permet d’économiser à peu près 5% du temps, à vous de voir si le jeu en vaut la chandelle,
  • En revanche, le type Long qui permet de stocker de grands nombres entiers permet d’économiser de nombreuses secondes ! Il peut donc être malin d’organiser les applications pour ne travailler qu’avec des nombres entiers (quitte à effectuer une division en toute fin de procédure si cela s’avère utile !)
  • Beaucoup plus surprenant en revanche, le type Byte est beaucoup plus lent que le type Long ! À vous de savoir trouver le bon équilibre entre occupation de mémoire et vitesse d’exécution

Enfin, il est évident que les résultats obtenus par ce test vont grandement variés d’un ordinateur à l’autre, en fonction de la configuration, des applications tournant en tâche de fond,…

Je serai d’ailleurs vraiment intéressé pour connaître vos résultats, alors n’hésitez pas à télécharger le support, pour partager vos propres résultats dans les commentaires.

 

   3.6. Alors on déclare ??

 

Bien souvent, à ce type de question, une réponse s’impose : ça dépend !

En effet, l’intérêt de déclarer ou non vos variables va surtout dépendre de votre projet.

Si les résultats du test permettent de diviser par 2,5 le temps nécessaire entre une procédure dans laquelle une variable est déclarée en tant qu’entier de type Long et une autre dans laquelle elle ne l’est tout simplement, n’oublions pas que pour encapsulons dans une boucle qui se répète 100 millions de fois !!

Pour le fun, voici une simulation dans laquelle la boucle n’est répétée « que » un million de fois :

Excel formation - VBA051 Benckmark des types de variables VBA - 05

Alors certes le rapport est toujours le même, par contre, il est absolument impossible de percevoir la différence entre un traitement qui va durée 0,07 secondes et un autre de 0,02 secondes !

En revanche, sachez que déclarer systématiquement vos variables peut amener d’autres avantages non négligeables, qui ne sont pas mesurés dans ce benchmark :

  • Cela permet de gagner du temps, en utilisant le menu déroulant d’aide à la complétion des noms de variables (voir l’astuce que nous avions vue dans le chapitre principal consacré aux variables de cette formation VBA) :

Excel formation - VBA051 Benckmark des types de variables VBA - 06

  • De plus, déclarer une variable en utilisant une majuscule permet de contrôler la bonne écriture de celle-ci, afin de se retrouver confronté à une erreur d’exécution (plantage de l’application qui ne retrouve pas la variable) En effet, lorsqu’Excel identifie une variable avec une majuscule, celui-ci l’ajoute automatiquement dans le nom de variable !

 

4. Comment nommer une variable ?

Au fur et à mesure que l’on avance dans le développement d’une application, le nombre de variables utilisé ne va faire que d’augmenter, si bien qu’il est important d’utiliser une méthodologie claire et facilement compréhensible dans la dénomination des variables.

Chaque développeur possède ces propres habitudes dans le choix des noms de variables, et le plus important est d’utiliser la méthode qui vous convient le mieux.

Je vais ici vous décrire ma propre méthode de dénomination des variables, libre à vous de l’utiliser où non.

Cette méthode est directement héritée de mes vieilles habitudes de développement en Objective C, qui était un langage de développement mise en place par Apple pour développer des applications sur ces machines :

  • le nom d’une variable permet de la définir de manière précise, quitte à avoir des noms d’une certaines longueur (mais nous verrons juste après que cela ne pose aucun soucis !),
  • il est saisi en minuscule, à l’exception de la première lettre de chaque mot qui est en majuscule (hormis la toute première lettre),
  • au possible utiliser au moins une majuscule, et laisser le soin à Excel de l’insérer lorsqu’il a identifié la variable ce qui permet d’avoir un repère visuel de la bonne saisie du noms,
  • certaines variables récurrentes dans tous les projet échappent à ces règles (« c » pour une cellule, « p » pour une plage, « i » pour un compteur, « tmp » pour une variable à la durée de vie très courte, « ws » pour une feuille de calcul…)

J’ajouterai également que s’il n’est pas indispensable d’utiliser des noms anglais ou français, l’important est de maintenir une cohérence au sein d’un même projet.

Pour séparer les mots dans les noms de variables, il est courant également d’utiliser le tiret (le « tiret bas », le signe moins étant interdit, comme nous le verrons juste après) : ma_variable, mon_autre_variable,…

Bref, vous l’avez bien compris à chacun ces propres règles !

En revanche il existe un certain nombre de règles qui s’impose par le langage VBA :

  • Il est impossible d’utiliser des points et des espaces,
  • Il est impossible d’utiliser les opérateurs mathématiques : */-+^
  • Il est impossible d’utiliser les caractères réservés : &, $, @, #, et %
  • Le premier caractère est forcément une lettre (minuscule ou majuscule),
  • La limitation est de 255 caractères
  • Il est impossible d’utiliser des mots réservés dans le cadre du langage VBA (Sub, For, Next, Function, Date, Time,…). Ces mots réservés sont nombreux, et le fait de coder en français peut aider à limiter le risque d’utiliser un terme interdit. Une autre solution est d’utiliser systématiquement un suffixe dans les noms de variables : myDate, myFunction,…

Dernière petite astuce forte utile lorsque l’on utilise des noms de variables longs :

  • Commencez par saisir les premières lettre du nom de la variable,

Excel formation - VBA05 Utiliser variables - 02

  • Puis utilisez le raccourci clavier [Ctrl]+[Espace] afin d’insérer instantanément la variable :

Excel formation - VBA05 Utiliser variables - 03

  • Si plusieurs noms commencent de la même manière, une boîte de dialogue apparaît pour sélectionner directement la variable à l’aide du clavier :

Excel formation - VBA05 Utiliser variables - 04

5. Comprendre la portée des variables

 

5.1. À quoi correspond la portée d’une variable

 

La portée d’une variable correspond à l’espace virtuel dans lequel celle-ci peut être utilisée.

Le plus souvent, et c’est notamment le cas de tous les exemples étudiés depuis le début de cette formation, nous déclarons une variable dans un module, afin que celle-ci soit utilisée par une ou plusieurs instructions insérées au sein de ce même module.

 

 Sub testDePortee()
    Dim maVariable As String
    maVariable = "Coucou"
    MsgBox maVariable
End Sub 

 

Excel formation - VBA052 Portée de variables - 01

Ici nous déclarons simplement une nouvelle variable de type String en début de procédure, puis nous lui donnons une valeur et enfin, nous affichons un message avec ce texte :

Excel formation - VBA052 Portée de variables - 02

En réalité, et sans nous en rendre compte, nous spécifions à VBA de déclarer une variable en spécifiant de limiter la portée à la procédure en cours.

Il existe trois types de portées :

  • La portée limitée à la procédure,
  • La portée limitée au module
  • La portée illimitée

Attention, la portée de la variable est déterminée à la création de celle-ci, il ne sera évidemment plus possible de la modifié par la suite

 

5.2. La portée limitée à la procédure

 

Dans l’exemple que nous venons de voir en préambule, nous spécifions que nous souhaitons créer une variable afin de l’utiliser uniquement au sein de la procédure en cours.

Lorsque la procédure arrivera à son terme, celle-ci sera détruite, ce qui implique :

  • Qu’il ne sera pas possible de l’utiliser dans d’autres procédures,
  • Que la mémoire dédiée pour cette variable va être libérée

Ainsi, si nous tentons d’accéder à cette variable en dehors des bornes de la procédure, cela entrainera obligatoirement une erreur :

 

 Sub testDePortee()
    Dim maVariable As String
    maVariable = "Coucou"
    MsgBox maVariable
    testDansUneAutreProcedure   ' Appel de la procédure
 testDansUneAutreProcedure()
End Sub
 
Sub testDansUneAutreProcedure()
    MsgBox maVariable
End Sub 

 

Excel formation - VBA052 Portée de variables - 03

Dans cet exemple, l’exécution de la procédure testDansUneAutreProcedure() (directement depuis la première procédure testDePortee()) a pour effet d’afficher un message vide :

Excel formation - VBA052 Portée de variables - 04

J’en profite pour faire un petit aparté : dans cet exemple, VBA se contente d’afficher un message d’erreur car la variable maVariable est inconnue de cette nouvelle procédure. Comme nous l’avons déjà abordé dans les chapitres précédents, lorsque nous demandons à VBA de travailler sur une nouvelle variable, celui-ci va en réalité déclarer de manière transparente cette variable à notre place. Pratique !? Oui et non ! C’est en effet pratique car cela permet de gagner quelques secondes lors de la rédaction de la procédure. En revanche cela peut être une source de bugs lorsque le développeur ne se rend pas compte que la variable qu’il souhaite manipuler n’existe pas dans la mémoire de la machine.

En effet, ici s’agissant d’un exemple volontairement simpliste, nous ne pouvons ignorer ce que nous faisons.

Mais maintenant imaginons que nous en soyons à plusieurs dizaines de lignes de code dans la procédure, et qu’au lieu de taper « maVariable », nous utilisions par erreur « maVarable »… À ce moment là Excel ne va pas nous alerter, mais au contraire il va créer une toute nouvelle variable pour nous, rendant par cette occasion caduque toutes les lignes située en amont…

Dans ce cas, il peut être intéressant d’exiger d’Excel de ne pas créer ces variables, et lorsque celui-ci se trouve confronté à une variable inconnue, il se contentera de nous présenter un message d’erreur.

Pour cela il suffit d’ajouter la ligne suivante au tout début du code (vraiment au tout début, directement sur la première ligne) :

 

 Option Explicit 

 

Et donc, si nous revenons sur notre exemple et que nous choisissons de relancer la procédure testDansUneAutreProcedure(), nous aurons alors l’erreur suivante « Erreur de compilation : Variable non définie » :

Excel formation - VBA052 Portée de variables - 05

Cette erreur est très explicite et permettra d’éviter de nombreux bugs dans nos macros.

Nous reviendrons dans le détail sur la commande Option Explicit, mais commencer dès maintenant à prendre l’habitude de l’utiliser peut-être une très bonne idée !

À la fin de la procédure, la variable s’éteint et perd sa valeur. La période qui s’écoule entre la création de la variable et son extinction correspond à sa durée de vie.

 

5.3. La portée étendue au module

 

Lorsque nous souhaitons utiliser une variable dans l’ensemble des procédures contenues dans un module, il est alors nécessaire d’étendre sa portée au niveau du module.

Pour cela, nous déclarons simplement la variable, non plus encapsulée dans une procédure, mais directement en haut du module (tout en haut si le module ne contient pas l’instruction Option Explicit, juste en dessous dans le cas contraire :

 

 Option Explicit
Dim maVariable As String
 
Sub testDePortee()
    maVariable = "Coucou"
    MsgBox maVariable
    testDansUneAutreProcedure   ' Appel de la procédure
 testDansUneAutreProcedure()
End Sub
 
Sub testDansUneAutreProcedure()
    MsgBox maVariable
End Sub 

 

Excel formation - VBA052 Portée de variables - 06

Ici, nous avons juste déplacé la création de la variable, mais si nous exécutons la procédure testDePortee(), nous allons constater que deux messages successifs vont être affichés avec le même message :

Excel formation - VBA052 Portée de variables - 07

Notez que pour déclarer une variable dont la portée doit être étendue au niveau du module, nous pourrions également utiliser le mot-clé Private, l’effet sera alors identique :

 

 Private maVariable As String 

 

Une variable dont la portée est étendue n’a pas de durée de vie, et ne s’éteint pas de manière automatique, contrairement à une variable dont la portée est limitée à une procédure. Une variable à la durée de vie illimité sera tout de même réinitialisée lorsque :

  • L’exécution de la macro est interrompue suite à une erreur d’exécution non interceptée,
  • Visual Basic est interrompue,
  • À la fermeture de Microsoft Excel,
  • Lorsque le code du module est modifié

Un dernier point important concernant ce type de portée étendue : il n’est pas possible d’affecter une valeur à une variable en dehors d’une procédure :

Excel formation - VBA052 Portée de variables - 08

 

5.4. La portée étendue à tout le projet

 

Enfin, il est également possible d’étendre la portée d’une variable à l’ensemble du projet.

Pour cela, nous déclarerons la variable en utilisant le mot-clé Public :

 

 Public maVariable As String 

 

Une variable ainsi déclarée pourra être utilisée dans l’ensemble du projet, quel que soit le module.

Comme nous venons de le voir pour une variable dont la portée est étendue au module, ici aussi, les variables ne voient pas leur vie s’éteindre automatiquement, et peuvent être utilisées n’importe quand.

En revanche, cela signifie que la mémoire allouée n’est jamais libérée, ces types de déclarations doivent donc rester exceptionnels.

L’autre inconvénient d’étendre ainsi la portée d’une variable est qu’il faut être très vigilent de ne pas créer plusieurs variables avec des noms identiques sous peine de provoquer un conflit !

 

5.5. Les variables hybrides : Static

 

Il existe encore une autre possibilité quant à la déclaration d’une variable, dont la portée est limitée à la procédure, mais dont la durée de vie n’a pas de fin, et sera conservé entre les différents appels de la procédure il s’agit des variables Static :

 

 Sub maVariableStatic()
    Static compter As Long
    compter = compter + 1
    
    If compter < 5 Then
        MsgBox compter
        maVariableStatic
    End If
End Sub 

 

Ici, nous créons une variable Static (par défaut celle-ci prend pour valeur 0), puis nous incrémentons la valeur de celle-ci.

Si la valeur est inférieure à 5, alors nous affichons cette valeur, puis nous appelons à nouveau cette procédure.

Cette boucle va donc se répéter jusqu’à ce que la variable « compter » ait pour valeur 4 :

Excel formation - VBA052 Portée de variables - 09

 

6. Les constantes

Pour finir ce chapitre, voyons un type de variable bien spécifique, puisque celui permet d’utiliser des variables… non variable !

Une constante permet en effet de stocker une donnée, qui n’a pas vocation à être modifiée !

À quoi peut bien servir une constante dans ce cas-là ? L’usage le plus courant que nous pouvons en avoir c’est de définir des réglages au niveau de l’application, que nous utiliserons ensuite à plusieurs reprises. De cette manière, il suffira de modifier la valeur à un seul endroit pour que l’effet se fasse partout où la constante est appelée.

On peut par exemple enregistrer le numéro de la version de l’application dans une constante : en effet, ce n’est pas l’application elle-même qui défini ce numéro, mais le développeur qui va le modifier manuellement :

 

 Const maVersion = "v.1.5" 

 

Une constante se déclare simplement avec l’instruction Const.

Évidemment, comme son nom l’indique, une constante ne doit pas être modifiée, sous peine de générer une erreur d’execution.

Le code suivant n’est donc pas bon

 

 Sub creerErreur()
     Const couleurFond = "bleu"
     couleurFond = "rouge"
End Sub 

 

Excel formation - VBA05 Utiliser variables - 05

De nombreuses constantes sont déjà définis par défaut dans VBA. Par exemple xlCalculationManual est une constante qui a pour valeur réelle -4135

Il est donc bien plus simple d’utiliser ces noms de constantes, plutôt que leur valeur, d’autant plus qu’Excel les conserve en mémoire :

Excel formation - VBA05 Utiliser variables - 06

Et après ? Nous avons vu beaucoup de choses concernant les variables, et pour le moment, nous allons en rester là, mais au cours des semaines à venir, nous aborderons d’autres aspects concernant les variables, au travers de chapitres complémentaires bonus (à paraître les mercredi en marge des chapitres régulier à sortir les vendredis) :

Mercredi prochain, nous reviendrons sur l’importance de déclarer le type des variables au travers de la mise en place d’un outil de benchmarking qui va nous permettre d’évaluer les temps de traitement de différents typages,

Le mercredi suivant, nous aborderons la portée des variables dans VBA : en effet, dans ce chapitre, nous avons vu comment instancier une variable dans une procédure, mais il est également possible de l’instancier directement dans le module, afin que la portée de celle-ci sorte des limites de la procédure ! Vous n’avez rien compris à cette explication ?? Patience, tout deviendra bientôt beaucoup plus clair !

Et enfin, dans le troisième épisode complémentaire dédié aux variables, nous verrons comment traiter tous les types de variables de VBA (nombre entiers, décimaux, chaînes de caractères, date,…)

Et comme d’habitude nous nous retrouvons vendredi prochain pour le prochain chapitre régulier de la formation VBA dans lequel nous développerons l’utilisation des procédures dans VBA ! Alors surtout pensez à vous abonner pour ne rien manquer !



Articles qui pourraient vous intéresser

Tout savoir sur les procédure SUB en VBA [#06 FORMATION EXCEL VBA COMPLETE]

Focus sur les variables en VBA [#05 FORMATION EXCEL VBA COMPLETE]

Comment évaluer une formule sur Excel : le déroulement pas à pas

Les tableaux croisés dynamiques, c’est facile !

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.