Cours gratuits » Cours informatique » Cours programmation » Cours visual basic » Apprendre à créer des programmes avec le langage Visual Basic

Apprendre à créer des programmes avec le langage Visual Basic


Télécharger



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Apprendre à créer des programmes avec le langage Visual Basic

...

Déclarer une variable

Pour créer une v ariable, v ous de vez la déclarer , c’est-à-dire lui af fecter un nom qu’il suffira par la suite de réutiliser pour xploiter la valeur qui y est stockée. La déclaration de variables dans un programme VBA peut être implicite ou e xplicite. Autrement dit, les programmes VBA peuv ent reconnaître l’utilisation d’une nouv elle v ariable sans que celle-ci soit préalablement créée dans une instruction de déclaration. Vous pouvez aussi paramétrer Visual Basic Edit

or afin d’ xiger la déclaration e xplicite des v ariables avant leur utilisation.

Déclaration implicite

Si la déclaration explicite des variables n’est pas requise, le simple f ait de faire apparaître un mot non reconnu par le programme dans une instruction d’af fectation suffira pour qu ce nom soit considéré comme une variable de type Variant par le programme — les types de variables sont présentés plus loin dans ce chapitre. C’est le cas dans l’exemple suivant :

Sub DéclarImpliciteDeVariables() mavar = Range("D7").Value

MsgBox "La somme totale des transactions est " & mavar, _ vbInformation + vbOKOnly

Instructions End Sub

Le mot MaVar apparaît pour la première fois dans une instruction d’af fectation valide. La variable MaVar est donc créée et affectée à la valeur de la cellule D7. Elle est ensuite utili- sée pour afficher un message à l’attention de l’utilisateur ( oir Figure 6.1). L’opérateur de concaténation & est utilisé pour f aire apparaître la v aleur de la v ariable au cœur d’une chaîne de caractères définie

Figure 6.1

Les variables peuvent être utilisées dans des chaînes à l’aide de l’opérateur de concaténation.

Vous pouv ez attrib uer le nom de v otre choix à une v ariable. Un nom de v ariable doit cependant respecter les règles suivantes :

             Il doit commencer par une lettre.

             Il ne peut contenir plus de 255 caractères.

             Le point, le point d’exclamation, les espaces et les caractères @, &, $ et # ne sont pas autorisés.

             Ce nom ne doit pas être un        mot réservé , c’est-à-dire un mot reconnu comme un élément du langage Visual Basic (nom de fonction, d’objets, de propriété, d’ar gument nommé, etc.).

Déclaration explicite

Si les v ariables peuv ent être déclarées implicitement, il est fortement recommandé de déclarer explicitement les variables avant de les utiliser.

Forcer la déclaration des variables avec Option Explicit

Visual Basic Editor permet de forcer la déclaration des v              ariables avant leur utilisation, grâce à l’instruction Option Explicit. L’utilisation de cette option permet d’éviter les risques d’erreurs liées à une f aute de frappe dans le nom d’une v ariable. Considérez la procédure suivante :

Sub MacroErreur()

MaVariable = Workbooks.Count While MaVarable < 10

Workbooks.Add

MaVariable = MaVariable + 1 Wend

End Sub

Cette procédure a pour b ut d’ouvrir des classeurs en boucle, jusqu’à ce que dix classeurs soient ouverts au total. Le nombre de classeurs ouv erts (Workbooks.Count) est affecté à la v ariable MaVariable. Une instruction While...Wend — que v ous découvrirez dans le prochain chapitre — est utilisée pour créer un nouv eau classeur ( Workbooks.Add) et ajouter 1 à MaVariable tant que la v aleur de celle-ci est inférieure à 10. Cependant, le nom de la variable a été incorrectement saisi dans l’instruction suivante :

While MaVarable < 10

"MaVarable" n’existant pas, cette variable est créée et aucune valeur ne lui est affectée. La procédure ouvre donc des documents et incrémente MaVariable de 1 à l’infini, sans que l condition MaVarable < 10 ne soit jamais respectée.

Pour interr ompre une macr o s’e xécutant à l’infini, tapez la combinaiso clavier Ctrl + Pause.

Pour éviter ce type d’erreur , forcez la déclaration e xplicite des variables. Pour cela, placez- vous dans la section Déclarations de la fenêtre Code du module et saisissez-y l’instruction Option Explicit (voir Figure 6.2).

Figure 6.2 L’instruction Option Explicit doit se trouver dans la section Déclarations de la fenêtre Code.

Dorénavant, l’apparition de noms de v ariables non préalablement déclarées à l’aide de l’instruction Dim dans une procédure générera une erreur. Dans notre exemple, l’utilisation de l’instruction Option Explicit entraînera le message d’erreur présenté à la Figure 6.3 à l’exécution du programme.

Figure 6.3

L’option Option Explicit permet de détecter immédia- tement les erreurs de saisie dans les noms de variables.

Vous pouvez aussi paramétrer Visual Basic Editor pour que l’instruction Option Explicit soit systématiquement placée dans la section de Déclarations de tout nouveau module.

  1. Sélectionnez la commande Options du menu Outils et placez-vous sur l’onglet Editeur.
  2. Cochez la case Déclaration explicite des variables, puis cliquez sur OK.

L’instruction Option Explicit sera désormais automatiquement placée dans la section appropriée de la fenêtre Code de chaque nouveau module.

Déclarer une variable avec Dim

La déclaration de variables se fait à l’aide de l’instruction Dim, selon la syntaxe suivante :

Dim NomVariable As Type

où NomVariable est le nom de la v ariable, qui sera utilisé par la suite pour y f aire réfé- rence, et  Type le type de données qu’accepte la v             ariable — présentés dans la section suivante. L’argument Type est f acultatif, mais la déclaration d’un type de v ariable peut vous faire économiser de l’espace mémoire et améliorer ainsi les performances de v otre programme. Lors de la déclaration de v ariables, une variable de type String prend pour valeur une chaîne vide, une variable numérique prend la valeur 0.

Dans l’exemple suivant, les variables Message, Boutons et Titre sont déclarées à l’aide de l’instruction Dim, des valeurs leur sont ensuite affectées, puis sont utilisées comme arguments de MsgBox afin d’a ficher la boîte de dialogue de la Figure 6.4

Sub UtiliserDim()

Dim Message As String Dim Boutons As Single Dim Titre As String

Message = "La procédure est terminée." Boutons = vbOKOnly + vbInformation Titre = "C’est fini"

MsgBox Message, Boutons, Titre End Sub

Figure 6.4

Des variables peuvent être utilisées comme arguments d’une fonction.

Plusieurs variables peuvent être déclarées dans une même instruction Dim, selon la syntax e suivante :

Dim NomVar1 As Type, NomVar2 As Type, ..., NomVarn As Type

 où NomVar1 est le nom de la première variable déclarée, et ainsi de suite. Les trois instruc- tions de déclaration de l’e xemple suivant peuvent ainsi être ramenées à une seule instruction de déclaration :

Dim Message As String, Boutons As Single, Titre As String

Gardez à l’esprit que pour af fecter un type aux v ariables d’une telle instruction, celui-ci doit être mentionné pour chacune des v ariables déclarées. L ’instruction suivante déclare une variable Message de type Variant et une variable Titre de type String :

Dim Message, Titre As String

Types de données des variables

Lorsque vous créez une variable, vous pouvez déterminer son type. Le type d’une varia- ble correspond au type de l’information qui peut y être stockée. Il peut s’agir d’une  valeur numérique (un nombre ou une expression renvoyant un nombre), d’une chaîne de caractères, d’une date, etc. Les v aleurs af fectées aux v ariables dans des inst ructions d’affectation doivent être compatibles avec le type de la variable. Par exemple, déclarer une variable de type numérique et lui af fecter par la suite une chaîne de caractères générera une erreur.

Vous pouvez aussi choisir de ne pas déterminer le type d’une variable. Elle sera alors de type Variant, et vous pourrez y stocker tous les types de données. Cette section présente les différents types de variables.

Chaînes de caractères

Les variables de type String — encore appelées "v ariables de chaîne" — permettent le stockage de données reconnues comme une chaîne de caractères. Pour déclarer une v ariable de type String, utilisez la syntaxe suivante :

Dim NomVariable As String

Une variable de chaîne peut être af fectée à toute expression renvoyant une valeur de type chaîne (chaîne, propriété, fonction, etc.). Pour af fecter une chaîne de caractères à une variable de type   String, placez celle-ci entre guillemets. Si v ous souhaitez placer des guillemets dans une chaîne de caractères (ou tout autre caractère), utilisez conjointement l’opérateur de concaténation & et la fonction Chr selon la syntaxe suivante :

"Chaîne de car." & Chr(codeANSI) & "Chaîne de car."

où codeANSI est le code ANSI du caractère que vous souhaitez insérer.

L’opérateur + peut aussi être utilisé pour concaténer des c haînes de caractères. Préférez cependant l’opérateur &, afin de distinguer aisément la concaténation d chaînes d’additions de valeurs numériques qui, elles, requièrent l’opérateur +.

Les instructions d’affectation suivantes sont toutes valides :

             Prénom = "Luc"

             NomFichier = ActiveWorkbook.Name

             Message = "Le nom du classeur actif est " & Chr(34) & ActiveWorkbook.Name  & Chr(34) & "."

La première instruction af   fecte une chaîne définie à la             ariable Prénom. La seconde instruction affecte la valeur de la propriété Name du classeur actif à la variable NomFichier. La troisième conjugue l’af fectation de chaînes définies dans le t             xte, renvoyées par une fonction et renvoyées par une propriété, en concaténant ces dif férentes chaînes à l’aide de l’opérateur &.

La macro suivante affiche la boîte de dialogue représentée à la Figure 6.5

Sub ConcatenerLesChaines()

Dim Message As String, Boutons As Single, Titre As String Message = "Le nom du document actif est " & Chr(34) & _

ActiveWorkbook.Name & Chr(34) & "." Boutons = vbInformation + vbOKOnly

Titre = "Concaténation de chaînes" MsgBox Message, Boutons, Titre

End Sub

Figure 6.5

Le message affi hé par la fonction MsgBox est toujours une chaîne de caractères.

Les variables de chaîne définies précédemment sont dites de longueur variable et peuvent être constituées d’en viron deux milliards de caractères. Vous pouvez cependant déclarer des v ariables de chaîne de           longueur fix , autorisant de 1 à 65 400 caractères, selon la syntaxe suivante :

Dim NomVariable As String * longueur

où longueur est le nombre de caractères que peut rece voir la v ariable. La déclaration de variables de chaîne de longueur fi e peut générer une économie de mémoire — et donc un gain de performance — pour v otre programme, mais doit être utilisée prudemment.

En effet, si la chaîne af fectée à une variable de longueur fi e dépasse la capacité de cette dernière, la chaîne sera purement et simplement rognée. Remplacez l’instruction de décla- ration des variables de l’exemple précédent par celle-ci :

Dim Message As String * 15, Boutons As Single, Titre As String * 5

Vous obtenez la boîte de dialogue présentée à la Figure 6.6.

Figure 6.6

Utilisez les variables de chaîne de longueur f xe avec prudence.

Valeurs numériques

Les variables numériques permettent le stockage de valeurs exploitables en tant que telles, c’est-à-dire sur lesquelles vous pouvez effectuer des opérations arithmétiques. Il existe plusieurs types de v ariables numériques. Elles se distinguent par l’échelle des v aleurs qu’elles acceptent et par la place qu’elles occupent en mémoire. Le Tableau 6.1 présente les différents types de variables numériques :

...

A condition que le type de la v ariable numérique MaVar couvre les v aleurs qui lui sont affectées, les instructions d’affectation suivantes sont toutes valides :

             MaValeur = 58

             NbreClasseur = Workbooks.Count

             Range("D5").Value = (Range("D3").Value + Range("D4").Value) / 2

             SurfaceCercle = (varRayon ^ 2) * 3.14

La première instruction af  fecte une v aleur définie à la              ariable MaValeur. La deuxième instruction af fecte la v aleur de la propriété Count de l’objet (la collection) Workbooks (le nombre de classeurs ouv erts). La troisième utilise l’opérateur arithmétique + pour addition- ner les v aleurs des cellules D3 et D4, et l’opérateur arithmétique                / pour di viser la v aleur obtenue par deux. La dernière instruction élèv e la variable varRayon précédemment défini au carré à l’aide de l’opérateur ^, puis multiplie cette valeur par 2 à l’aide de l’opérateur *.

Par contre, l’instruction sui vante affecte une v aleur de type chaîne à la v ariable numérique

Mavar et génère une erreur (voir Figure 6.8).

Sub ErreurAffectation() Dim Mavar As Byte

MaVar = ActiveWorkbook.Name End Sub

Figure 6.8

Une chaîne de caractères ne peut être affectée à une variable numérique.

Rappelez-vous que les constantes sont en réalité des valeurs numériques. Une constante peut donc être af fectée à une v ariable numérique et utilisée dans une e xpression arithmétique. Veillez à ne pas utiliser l’opérateur     &, réservé à la concaténation de chaînes, dans une instruction d’affectation de valeur à une variable numérique. Par exemple, l’instruction :

MsgBox "Le message de la bdg", vbOKOnly + vbInformation, "Titre" est valide, tandis que l’instruction :

MsgBox "Le message de la bdg", vbOKOnly & vbInformation, "Titre"

générera un message d’erreur , car l’opérateur & est utilisé pour additionner les v aleurs affectées aux constantes vbOKOnly et vbInformation.

VBA intègre de nombreuses fonctions permettant de manipuler les v aleurs numériques. Les deux fonctions suivantes en sont des exemples :

             ABS(nombre). Renvoie la valeur absolue du nombre spécifié entre parenthèses

             Int(nombre). Renvoie la partie entière du nombre spécifié entre parenthèses

La liste des fonctions VBA est consultable dans l’aide en ligne. Choisissez la rubrique Manuel de référence du langage. Vous y trouverez une rubrique Fonctions répertoriant les fonctions par ordre alphabétique. Vous pouvez ég alement y choisir la rubrique Liste et index. Vous y trouverez des rubriques thématiques, telles que Résumé des mots clés financier , ou Résumé des mots clés mathématiques.

Valeurs booléennes

Les variables de type Boolean serv ent à stock er le résultat d’e xpressions logiques. Une variable de type Boolean peut renvoyer la valeur True ou False et occupe deux octets en mémoire. Une v ariable booléenne peut rece voir la v aleur retournée par une e xpression renvoyant une valeur de type Boolean, mais peut aussi être af fectée à une valeur numéri- que. Dans ce cas, si la v aleur numérique est ég ale à zéro, la v ariable prendra la v aleur False, True dans le cas contraire. Une variable booléenne utilisée comme chaîne de carac- tères renvoie le mot Vrai ou Faux.

Dans l’exemple suivant, la variable booléenne ClasseurSauvegardé prend la valeur False si le classeur actif a subi des modifications depuis le dernier enr gistrement ; True dans le cas contraire. Une boîte de dialogue af fiche ensuite le message Vrai ou Faux, en fonction de la valeur de ClasseurSauvegardé.

Sub ClasseurSauvegardéOuNon()

Dim ClasseurSauvegardé As Boolean ClasseurSauvegardé = ActiveWorkbook.Saved MsgBox ClasseurSauvegardé

End Sub

Dates

Les dates comprises entre le 1er janvier 100 et le 31 décembre 9999 peuvent être affectées à des v ariables de type Date. Ces v ariables sont stockées sous la forme de nombres à virgule flottante et occupent huit octets en mémoire

La partie entière du nombre représente le jour. 0 correspond au 30 décembre 1899, 1 au 31 décembre 1899, etc. Les v aleurs nég atives représentent des dates antérieures au

30 décembre 1899. La partie décimale du nombre représente l’heure. 0.5 correspond à   12 heures, 0.75, à 18 heures, etc. Ainsi, 36526.00001 correspond au 1 er janvier 2000, à

00:00:01.

Visual Basic intègre des fonctions permettant de manipuler les dates. P ar e xemple, les fonctions Date, Time et Now renvoient respectivement la date courante, l’heure courante et la date courante suivie l’heure courante. La procédure suivante affiche la boîte de dialogu de la Figure 6.9 :

Sub DateEtHeure()

Dim LaDate As Date, LHeure As Date LaDate = Date

LHeure = Time

MsgBox "Nous sommes le " & LaDate & ", il est " & LHeure & ".", _ vbOKOnly + vbInformation, "Fonctions Date et Time"

End Sub

Figure 6.9

Visual Basic intègre des fonctions permettant de manipuler les dates et les heures.

Pour plus d’informations sur les fonctions de date et d’heure, reportez-vous à l’aide Visual Basic, en choisissant Résumé des mots clés de date et d’heure de la rubrique Inde x/Listes du Manuel de référence du lang age. Vous pouvez également vous reporter au Manuel de référence pour Microsoft Excel, disponible dans le sommaire de l’aide.

L’installation par défaut d’Excel n’installe pas l’aide en ligne de VBA. Si vous n’avez pas ef fectué une installation per sonnalisée, vous de vrez lancer de nouveau l’installation et installer l’aide en ligne de VBA.

Type Variant

Une variable, ou une variable de type Variant, accepte des valeurs de tout type et peut être automatiquement convertie d’un type à l’autre, tant que sa v aleur est compatible a vec le type vers lequel s’opère la con version. Autrement dit, une v ariable de type Variant peut être initialement une chaîne de caractères, et être e xploitée par la suite en tant que v aleur numérique. Si les données qui lui sont af fectées sont assimilables à une valeur numérique, la con version se fera automatiquement, lorsque l’instruction assimilable à une opération numérique sera exécutée.

Si les variables de type Variant sont très pratiques, elles occupent un espace en mémoire plus important que les autres types de v ariables (16 octets pour les v aleurs numériques et 22 octets pour les valeurs de chaîne) et peuvent donc ralentir l’exécution du programme.

 Une variable, une constante ou un argument dont le type n’est pas déclaré sont assimilés à une variable de type Variant. Vous pouvez cependant spécifier le type Variant pour faci- liter la lecture de votre code. Les instructions suivantes sont équivalentes :

Dim MaVar

Dim MaVar As Variant

Variables de matrice

Une variable de matrice ou de type Array, parfois appelée tableau, est une variable permet- tant de stocker plusieurs valeurs. Contrairement à une variable ordinaire ne pouvant rece- voir qu’une seule v aleur, vous pouvez déterminer plusieurs emplacements de stockage pour une v ariable de matrice. Les v ariables de matrice permettent de stock              er des listes d’éléments de même type dans une même variable. Vous pouvez par exemple stocker dans une variable de matrice les chif fres d’affaires de tous les représentants. Pour déclare r une variable de matrice, utilisez la syntaxe suivante :

Dim NomVariable(NbreElements) As Type

où NomVariable est le nom de la variable, NbreElements, le nombre de valeurs que recevra la variable, et Type, le type de données qu’accepte la v ariable. Pour affecter des valeurs à une variable de matrice ou accéder à celles-ci, il suf fit de spécifier la position de la aleur stockée dans la v ariable. La première v aleur rece vant l’inde x 0, la dernière v aleur est toujours égale au nombre d’éléments contenus dans la variable moins 1.

Pour démarr er l’inde x d’un tableau à 1 plutôt qu’à 0, placez l’instruction

Option Base 1 dans la section Déclarations du module.

Une variable de matrice peut également être déclarée selon la syntaxe suivante :

Dim NomVariable(Début To Fin) As Type

où Début et Fin définissent la plage de aleurs qui sera utilisée pour stocker et accéder aux données de la variable.

Une variable de matrice peut vous servir à stocker des données de même type. Il est alors recommandé de déclarer un type approprié. Dans l’exemple suivant, la variable de matrice JoursSemaine stock e sous forme de chaînes les jours de la semaine. Une structure de contrôle For...Next est ensuite utilisée pour afficher les aleurs contenues par la variable dans une boîte de dialogue.

Sub VarMatrice()

Dim JoursSemaine(7) As String JoursSemaine(0) = "Lundi"

JoursSemaine(1) = "Mardi" JoursSemaine(2) = "Mercredi" JoursSemaine(3) = "Jeudi" JoursSemaine(4) = "Vendredi" JoursSemaine(5) = "Samedi" JoursSemaine(6) = "Dimanche" Dim compteur as Byte

For compteur = 0 To 6

MsgBox JoursSemaine(compteur) Next compteur

End Sub

Une variable de matrice peut aussi servir à stock er des données de types dif férents. Elle doit alors être de type Variant. La procédure sui vante stocke dans une seule v ariable le nom, la date de naissance, l’adresse, la fonction et le salaire d’un emplo yé. Ces données sont ensuite affichées dans une boîte de dialogue ( oir Figure 6.10).

Sub InfosEmployé

Dim Employé(1 To 5) As Variant Employé(1) = "Jean Dupont" Employé(2) = "25/12/71" Employé(3) = "14, rue des Arts" Employé(4) = "Chargé d’études" Employé(5) = 12000

MsgBox Employé(1) & " est né le " & Employé(2) & ". Il habite " & _ Employé(3) & " et est " & Employé(4) & ". Son salaire est de : " & _ Employé(5) & " euros", vbOKOnly + vbInformation, "Infos employé"

End Sub

Figure 6.10

Toutes les informations relatives à un même sujet peuvent être stockées dans une seule variable de matrice.

Utilisez la fonction IsArray pour vérifier si une variable est de type Array.

Variables de matrice multidimensionnelles

Les variables de matrice peuv ent être multidimensionnelles. Les données sont alors stoc- kées horizontalement et verticalement, à la manière d’un tableau. Les variables de matrice multidimensionnelles permettent de stock er de f açon cohérente les v aleurs d’une feuille Excel. Les v ariables multidimensionnelles se déclarent selon la même syntax  e que les variables de matrice à une dimension, en ajoutant simplement les ar               guments d’index de début et de fin pour la deuxième dimension

Dim NomVariable(Début1 To Fin1, Début2 To Fin2) As Type

Considérez la feuille de classeur représentée à la Figure             6.11. Elle représente les v entes mensuelles pour l’année 2003, de quatre types de produits, soit 12 lignes sur quatre colon- nes. Une v ariable de matrice multidimensionnelle permettra de stock            er l’ensemble des valeurs de cette feuille logiquement.

Figure 6.11

Utilisez les variables de matrice multidimen- sionnelles pour stocker les valeurs d’un tableau.

La déclaration de la variable de matrice multidimensionnelle se présentera comme suit :

Dim MonTableau(1 To 12, 1 To 4) As Single

Cette variable correspond à un tableau de données de 12 lignes sur 4 colonnes. Il suffit ensuit d’affecter logiquement les valeurs de la feuille aux espaces de stockage de la variable :

MonTableau(1, 1) = Cells(3, 2).Value MonTableau(1, 2) = Cells(3, 3).Value MonTableau(1, 3) = Cells(3, 4).Value MonTableau(1, 4) = Cells(3, 5).Value MonTableau(2, 1) = Cells(4, 2).Value MonTableau(2, 2) = Cells(4, 3).Value MonTableau(2, 3) = Cells(4, 4).Value MonTableau(2, 4) = Cells(4, 5).Value Etc.

Ainsi, pour accéder aux v entes d’un mois, il suf fira de spécifier la aleur correspondante comme premier index de la variable MonTableau (1 = janvier, 2 = février, etc.). Pour accéder à une catégorie de v entes, il suffira de spécifier la aleur correspondante comme second inde x de la variable MonTableau (1 = Livres, 2 = Vidéo, 3 = Hi-Fi, 4 = Autres). Par exemple, MonTa- bleau(1, 1) renverra le chiffre des ventes du mois de janvier pour les livres ; MonTableau(12,

2)            renverra le chiffre des ventes du mois de décembre pour la vidéo.

N’hésitez pas à utiliser les v ariables de matrice pour stock er les données d’une feuille Excel auxquelles un programme VBA doit accéder à de multiples reprises. La v ariable ainsi créée est chargée en mémoire. L’accès aux données qu’elle contient en est sensiblement plus rapide qu’un accès aux valeurs contenues dans les cellules d’une feuille de calcul.

L’utilisation d’une structure de contrôle For...Next permettra d’af fecter l’ensemble des valeurs de ce tableau à une variable de matrice en quelques lignes de code. Vous apprendrez à utiliser cette structure au Chapitre 7.

Une variable de matrice n’est pas limitée à deux dimensions.  Vous pouvez parfaitement créer une variable de matrice à trois dimensions, ou plus.

Les fonctions LBound et UBound renvoient respectivement le plus petit indice et le plus grand indice disponible pour une dimension spécifiée d’un tableau et s’utili sent selon la syntaxe suivante :

LBound(NomVariable, Dimension) et UBound(NomVariable, Dimension)

où NomVariable est le nom de la variable de matrice et Dimension, la dimension dont vous souhaitez connaîtr  e le plus petit ou le plus gr   and indice (1 pour la première dimension, 2 pour la deuxième , etc.). Si l’argument Dimension est omis, le plus petit ou le plus grand indice de la première dimension est renvoyé.

Variables de matrice dynamiques

Les v ariables de matrice dynamiques sont des v             ariables de matrice dont v ous pouv ez modifier la taille. Pour déclarer une      ariable de matrice dynamique, ne spécifiez pas d valeur entre les parenthèses qui suivent son nom. L’instruction suivante :

Dim NomVariable()

crée une v ariable de matrice dynamique. Avant d’af fecter des v aleurs à la v ariable de matrice ainsi créée, vous devrez la redimensionner à l’aide de l’instruction ReDim, selon la syntaxe suivante :

ReDim NomVariable(Début To Fin)

Vous pouvez utiliser le mot clé ReDim pour redimensionner une variable de matrice autant de fois que vous le souhaitez. Les variables de matrice sont intéressantes lorsque v ous ne connaissez pas la quantité de données à stock er. Supposez que, dans l’exemple précédent, la feuille de calcul des ventes ne soit pas une feuille de calcul annuelle, mais mensuelle. Le tableau s’enrichirait alors tous les mois d’une nouv elle ligne. Pour que v otre programme fonctionne tout au long de l’année, vous devrez créer une variable de matrice de longueur variable. C’est ce que fait la procédure suivante :

1: Sub AffectationVariableArray() 2: Dim MonTableau() As Single 3: Dim DerniereLigne As Byte

4:            DerniereLigne = Range("A3").End(xlDown).Row 5:        Dim NbreDeLignes As Byte

6:            NbreDeLignes = DerniereLigne - 2

7:            ReDim MonTableau(NbreDeLignes, 4)

8:            Instructions d’affectation de valeurs à MonTableau 9: End Sub

Aux lignes 2 et 3, les variables MonTableau et DerniereLigne sont déclarées. L’instruction de la ligne 4 sert à affecter le numéro de la dernière ligne contenant des données à la varia- ble DerniereLigne. La fonction End ren voie l’objet Range correspondant à la dernière cellule non vide sous (xlDown) la cellule A3. La propriété Row renvoie la valeur du numéro de ligne de cet objet. La v ariable NbreDeLignes est créée ligne 5. On lui af fecte ensuite une valeur égale à DerniereLigne - 2, soit le nombre de lignes contenant des données à stocker dans la variable (les deux premières lignes ne contenant pas de données à stocker). A la ligne 7, la v ariable de matrice MonTableau est redimensionnée de f açon à accueillir l’ensemble des chiffres de ventes de la feuille.


39