====== Activité 5 : Programmation objet avec VBA ======
Utilisez le même fichier Excel {{:dev:excelvba:td_excel_1.xls|}} contenant le modèle de facture que vous devez utiliser.
===== Introduction à la programmation objet VBA=====
Dans Excel, les classeurs, les feuilles de calcul et les plages de cellules sont des **objets** que vous pouvez manipuler avec VBA pour :
* **accéder** à ces objets,
* les **interroger** et **modifier** leurs propriétés,
* utiliser des **méthodes** (les actions qu'il est possible de faire) et **gérer des événements** comme l'ouverture d'un document ou le clic de la souris.
Il est souhaitable aussi de pourvoir **gérer les erreurs** lors de l'usage des objets. Mais cela ne sera pas abordé dans les activités qui vont suivent.
Il s'agit de faire une **première approche de la programmation objet** en se familiarisant avec la syntaxe générale des instructions VBA et les principaux objets d’Excel.
===== Travail à faire =====
==== Accéder à un classeur ====
Créez un deuxième classeur Excel appelé **CLasseur2** (en plus du classeur **td_excel_1.xls **) et ouvrez-le. Ajoutez deux feuilles de calcul à ce nouveau classeur. Vous devez avoir ces **deux classeurs ouverts**.
Sélectionnez (activez) le classeur **td_excel_1.xls ** et écrivez dans le module **DCG** de ce classeur une procédure **ActiveClasseur2()** qui active le second classeur **Classeur2.xlsx**.
Code VBA à utiliser :
Workbooks("Classeur2.xlsx").Activate
==== Accéder à une feuille d’un classeur ====
Toujours à partir du classeur **td_excel_1.xls **, complétez votre procédure **ActiveClasseur2()** pour activez la feuille Feuil3 du classeur **Classeur2.xlsx**.
Code VBA à utiliser :
Worksheets("Feuil3").Select
==== Accéder à une cellule ====
Toujours à partir du classeur **td_excel_1.xls **, complétez votre procédure **ActiveClasseur2()** pour activez, dans la feuille Feuil3 du classeur **Classeur2.xlsx**, la cellule **B2** :
Code VBA à utiliser :
Range("B2").Select
À la place de **Range("B2")**, vous pouvez écrire **Cells(2, 2)**.
==== Sélectionner une plage de cellules ====
Toujours à partir du classeur **td_excel_1.xls **, complétez votre procédure **ActiveClasseur2()** pour activez, dans la feuille Feuil3 du classeur **Classeur2.xlsx**, la plage de cellules de **A1 à C3** et rendre active la cellule **B3**.
Code VBA à utiliser :
Range("A1:C3").Select
Range("B3").Activate
==== Connaître le nom d’une feuille de calcul ====
Toujours à partir du classeur **td_excel_1.xls **, créez une procédure **InformationActiveClasseur2()** pour activez, dans la feuille Feuil3 du classeur **Classeur2.xlsx**, la plage de cellules de **A1 à C3** et rendre active la cellule **B3**.
Code VBA à utiliser :
Range("A1:C3").Select
Range("B3").Activate
==== Modifier les propriétés d’un objet ====
Toujours à partir du classeur **td_excel_1.xls **, complétez la procédure **InformationActiveClasseur2()** pour renommer la feuille **Feuil3** du classeur **Classeur2.xlsx** en lui donnant le nom **Information**.
Code VBA à utiliser :
Dim wksFeuille As Worksheet
Set wksFeuille = Workbooks("Classeur2.xlsx").Worksheets(3)
wksFeuille.Name = "Information"
* L'instrucion **Set** permet de créer une variable objet **wksFeuille**, de préciser que cette variable est de type objet feuille de calcul (**Worksheet **) et de lui affecter la feuille numéro 3 du classeur.
* l'instruction suivante permet d'indiquer plus simplement le nouveau nom de la feuille 3. Sinon on aurait pu écrire :
Workbooks("Classeur2.xlsx").Worksheets(3).Name = "Information"
ou
Workbooks("Classeur2.xlsx").Worksheets("Feuil3").Name = "Information"