====== Activité 5 : Programmation objet avec et 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" ==== Retour au menu de Excel & VBA ==== [[dev:excelvba:accueil|Excel et VBA (Visual Basic pour Application)]]