Dans la leçon précédente, nous avons examiné les variables dans lesquelles certaines données peuvent être écrites, mais elles ne peuvent pas contenir plus d'une valeur. Pour contourner cette limitation, il existe des tableaux dans VBA qui peuvent stocker plusieurs valeurs.
Voici quelques exemples de différents tableaux :
Sub variables() 'Un exemple de déclaration d'une variable Dim var1 As String 'Un exemple de déclaration d'un tableau à 1 dimension Dim array1(4) As String 'Un exemple de déclaration d'un tableau à 2 dimensions Dim array2(4, 3) As String 'Un exemple de déclaration d'un tableau à 3 dimensions Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
Un tableau unidimensionnel peut être considéré comme un tableau composé d’une seule colonne. Le tableau array1(4) est un tableau unidimensionnel pouvant contenir 5 enregistrements. Pourquoi 5 ? Parce que le nombre d'enregistrements dans le tableau commence à zéro (0, 1, 2, 3, 4).
Considérons maintenant un tableau à 2 dimensions :
Dim array2(4, 3) As String
Cela ressemblera déjà à un tableau avec 5 lignes et 4 colonnes :
'Attribuer des valeurs aux cellules colorées array2(0, 0) = "Valeur en cellule rouge" array2(4, 1) = "Valeur dans la cellule verte" array2(2, 3) = "La valeur dans la cellule bleue"
Comme les variables, les constantes peuvent être utilisées pour stocker des valeurs, mais la différence est que les valeurs ne peuvent pas changer. On peut ajouter une constante pour éviter de répéter la valeur, par exemple 13.14 :
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Cela rend le code plus facile à comprendre et à modifier. Il permet également de modifier la valeur de la constante tout simplement :
Sub const_example() 'Déclarer une constante + attribuer une valeur Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Portée des variables
Si une variable est déclarée au début d'une procédure (Sub), alors elle ne peut être utilisée que dans cette procédure. La valeur de la variable ne sera plus disponible une fois la procédure exécutée.
Sub procedure1() Dim var1 As Integer '=> La variable n'est valide que dans cette procédure End Sub Sub procedure2() '=> var1 ne peut pas être utilisé ici End Sub
Pour utiliser une variable dans n'importe quelle procédure de module, il suffit de la déclarer au tout début du module. Et si vous déclarez une variable comme celle-ci, elle sera disponible jusqu'à la fermeture du classeur.
Dim var1 As Integer Sub procedure1() '=> var1 peut être utilisé ici End Sub Sub procedure2() '=> var1 peut également être utilisé ici End Sub
Si vous souhaitez utiliser la même variable dans tous les modules du livre, vous devez uniquement remplacer Dim par Global dans l'exemple précédent :
Global var1 As Integer
Pour utiliser une variable après avoir exécuté la procédure dans laquelle elle apparaît, remplacez Dim par Static :
Sub procedure1() Static var1 As Integer End Sub
Pour utiliser les valeurs de toutes les variables dans la procédure, ajoutez Static avant Sub :
Static Sub procedure1() Dim var1 As Integer End Sub
Voici un exemple rapide de la façon dont vous pouvez créer votre propre type :
'Création d'un type de variable Type customers last_name As String first_name As String End Type Sub variables() 'Déclaration d'une variable Dim cust1 As customers 'Attribuer une valeur à cust1 cust1.last_name = "Smith" cust1.first_name = "John" 'Exemple d'utilisation MsgBox cust1.last_name & " " & cust1.first_name End Sub