Utiliser des variables VBA : déclaration, portée et types de données
Ce tutoriel vous expliquera en détail la déclaration, la portée, et les différents types de variables en VBA, avec des exemples pratiques pour vous aider à maîtriser ces concepts.
Une variable en VBA est un espace mémoire utilisé pour stocker des données qui peuvent changer au cours de l’exécution d’un programme. Par exemple, vous pourriez utiliser une variable pour stocker un nombre, du texte, ou une date.
Nous vous accompagnons pour la maîtrise de ces concepts lors de notre formation Excel VBA.
Déclaration des variables
En VBA, vous déclarez une variable à l’aide de l’instruction Dim, suivie du nom de la variable, du mot-clé As, puis du type de données.
Syntaxe de base
Si vous souhaitez affecter une valeur numérique à une cellule particulière, vous pouvez utiliser le code suivant :
Dim nomDeLaVariable As TypeDeDonnée
Exemple
Dim age As Integer Dim nom As String Dim estActif As Boolean
Portée des variables
La portée d’une variable définit où dans le programme cette variable peut être utilisée. La portée est déterminée par l’endroit où et comment la variable est déclarée.
Variables locales (Dim)
Déclarées à l’intérieur d’une procédure, elles ne sont accessibles qu’au sein de cette procédure.
Sub ExemplePorteeLocale() Dim message As String message = "Bonjour" MsgBox message End Sub
Variables de module (Dim en haut de module)
Déclarées avec Dim en haut du module, en dehors de toute procédure. Elles sont accessibles par toutes les procédures du module.
Dim compteur As Integer Sub IncrementerCompteur() compteur = compteur + 1 End Sub Sub AfficherCompteur() MsgBox "Le compteur est à : " & compteur End Sub
Variables de module (Private)
Déclarées en dehors des procédures mais à l’intérieur d’un module. Elles sont accessibles par toutes les procédures du module.
Private message As String Sub InitialiserMessage() message = "Bonjour" End Sub Sub AfficherMessage() MsgBox message End Sub
Variables publiques (Public)
Déclarées en dehors des procédures avec le mot-clé Public, elles sont accessibles par tous les modules du projet.
Public message As String Sub InitialiserMessage() message = "Bonjour" End Sub Sub AfficherMessage() MsgBox message End Sub
Variables globales (Global)
Utilisées dans des projets plus anciens ou des modules spécifiques, Global fonctionne de manière similaire à Public, mais il est maintenant recommandé d’utiliser Public.
Global message As String
Types de données en VBA
Les variables peuvent stocker différents types de données. Voici un tableau résumant les types de données courants, le signe de déclaration rapide, la taille en mémoire, et la plage de valeurs.
Plage de valeurs
Type de Données | Signe de Déclaration Rapide | Taille (Octets) | Plage de Valeurs |
---|---|---|---|
Integer | % | 2 | -32 768 à 32 767 |
Long | & | 4 | -2 147 483 648 à 2 147 483 647 |
Single | ! | 4 | -3 402823E38 à 3 402823E38 |
Double | # | 8 | -1 79769313486231E308 à 1 79769313486231E308 |
Currency | @ | 8 | -922 337 203 685 477,5808 à 922 337 203 685 477,5807 |
String | $ | Variable | Jusqu'à environ 2 milliards de caractères |
Boolean | Aucun | 2 | True ou False |
Date | Aucun | 8 | 1er janvier 100 à 31 décembre 9999 |
Variant | Aucun | 16 | Peut contenir n’importe quel type de données |
Description des types de données
Integer (%) : Ce type de données stocke des nombres entiers compris entre -32,768 et 32,767. Il est utile pour les calculs simples où des nombres entiers sont requis.
Long (&) : Utilisé pour stocker des nombres entiers plus grands que ceux supportés par Integer, avec une plage de valeurs allant de -2,147,483,648 à 2,147,483,647. Il est souvent utilisé dans les boucles et les comptages nécessitant une grande précision.
Single (!) : Ce type de données est utilisé pour les nombres à virgule flottante simple précision, c’est-à-dire les nombres avec des décimales. Il occupe 4 octets et offre une bonne balance entre précision et consommation de mémoire pour des calculs numériques.
Double (#) : Le type Double est utilisé pour des nombres à virgule flottante double précision, permettant de stocker des valeurs très grandes ou très petites avec une plus grande précision que Single. Il est essentiel pour des calculs nécessitant une précision accrue.
Currency (@) : Ce type de données est spécialement conçu pour les calculs financiers, offrant une très grande précision avec une gestion des décimales jusqu’à quatre chiffres après la virgule. Il est souvent utilisé pour des montants en devises afin d’éviter les erreurs d’arrondi.
String ($) : Utilisé pour stocker du texte, le type String peut contenir une chaîne de caractères allant jusqu’à environ 2 milliards de caractères. Il est couramment utilisé pour les noms, les adresses et d’autres informations textuelles.
Boolean : Ce type de données stocke uniquement deux valeurs possibles : True ou False. Il est utilisé pour les conditions et les tests logiques.
Date : Ce type de données est utilisé pour stocker des dates et des heures, couvrant une plage allant du 1er janvier 100 au 31 décembre 9999. Il est utile pour les calculs de dates et de temps.
Variant : Le type Variant est un type polyvalent qui peut contenir n’importe quel type de données, qu’il s’agisse de texte, de nombres, ou de dates. Cependant, il consomme plus de mémoire et peut ralentir l’exécution du code, car VBA doit déterminer dynamiquement le type de données qu’il contient. C’est le type par défaut si aucun autre type n’est spécifié.
Déclaration des variables tableaux (Arrays)
Les tableaux, ou arrays, sont des variables capables de contenir plusieurs valeurs à la fois. Ils sont particulièrement utiles lorsque vous devez stocker et manipuler un ensemble de valeurs similaires. Les tableaux peuvent être à une ou plusieurs dimensions.
Pour vous assurer que vos varaibles ont bien été déclarées, vous pouvez demander à notre freelance Excel VBA de relire votre code.
Déclaration d’un tableau à une dimension
Dim noms(5) As String
Dans cet exemple, le tableau noms peut stocker jusqu’à 6 éléments (de l’indice 0 à 5) de type String.
Déclaration d’un tableau dynamique
Un tableau dynamique permet de redimensionner le nombre d’éléments qu’il contient pendant l’exécution du programme.
Dim valeurs() As Integer ReDim valeurs(10)
L’instruction ReDim est utilisée pour redimensionner le tableau à 11 éléments (indices de 0 à 10). Vous pouvez également utiliser Preserve avec ReDim pour conserver les valeurs existantes dans le tableau tout en le redimensionnant.
ReDim Preserve valeurs(15)
Tableau à plusieurs dimensions
Vous pouvez déclarer des tableaux à plusieurs dimensions pour représenter des données sous forme de grille.
Dim matrice(2, 3) As Double
Ici, matrice est un tableau à deux dimensions avec 3 lignes (indices 0 à 2) et 4 colonnes (indices 0 à 3).
Déclaration d’objets comme variables
En VBA, vous pouvez également déclarer des objets comme variables. Les objets sont des entités complexes, comme des feuilles de calcul ou des classeurs, qui ont des propriétés et des méthodes associées. Voici quelques exemples courants :
Range
Représente une ou plusieurs cellules dans une feuille de calcul.
Dim plage As Range Set plage = ThisWorkbook.Sheets("Feuil1").Range("A1:A10")
Worksheet
Représente une feuille de calcul dans un classeur.
Dim feuille As Worksheet Set feuille = ThisWorkbook.Sheets("Feuil1")
Workbook
Représente un classeur Excel.
Dim classeur As Workbook Set classeur = Workbooks.Open("C:\chemin\vers\le\fichier.xlsx")
Shape
Représente une forme, comme un graphique ou une image, dans une feuille de calcul.
Dim forme As Shape Set forme = ThisWorkbook.Sheets("Feuil1").Shapes("Rectangle 1")
Ces objets permettent d’interagir directement avec les composants de l’application Office de manière puissante et flexible.
Exemple d’utilisation d’objets
Sub ManipulerObjets() Dim feuille As Worksheet Dim plage As Range Dim classeur As Workbook Set classeur = ThisWorkbook Set feuille = classeur.Sheets("Feuil1") Set plage = feuille.Range("A1:B2") ' Modifier les valeurs dans la plage plage.Value = "Nouveau Texte" ' Ajouter une nouvelle feuille classeur.Sheets.Add After:=classeur.Sheets(classeur.Sheets.Count) End Sub
Dans cet exemple, nous avons déclaré et utilisé plusieurs objets : un classeur, une feuille de calcul, et une plage de cellules.