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éesSigne de Déclaration RapideTaille (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$VariableJusqu'à environ 2 milliards de caractères
BooleanAucun2True ou False
DateAucun81er janvier 100 à 31 décembre 9999
VariantAucun16Peut 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.