Leçon 3 / 7 — Chapitre 3: Manipuler les objets Excel par code
Manipuler les classeurs (Workbooks) par code
Jusqu'ici, toutes les macros ont agi sur le classeur contenant le code lui-même. Il est aussi possible d'ouvrir, de fermer et de manipuler d'AUTRES classeurs par code, ainsi que de distinguer précisément à quel classeur une instruction s'applique.
Deux repères essentiels : ThisWorkbook et ActiveWorkbook
ThisWorkbook désigne toujours le classeur qui CONTIENT le code en cours d'exécution, même si un autre classeur est affiché à l'écran au moment de l'exécution. ActiveWorkbook désigne le classeur actuellement AFFICHÉ à l'écran — les deux peuvent différer dès que plusieurs classeurs sont ouverts en même temps.
Ouvrir un classeur externe
Sub OuvrirClasseur()
Dim classeurExterne As Workbook
Set classeurExterne = Workbooks.Open("C:\Data\ventes.xlsx")
' ... traitement du classeur ouvert ...
classeurExterne.Close SaveChanges:=True
End Sub
Workbooks.Open ouvre un fichier existant à partir de son chemin complet et renvoie une référence au classeur ouvert, stockée ici dans classeurExterne pour pouvoir le manipuler puis le refermer proprement.
Enregistrer et fermer
ThisWorkbook.Save
classeurExterne.Close SaveChanges:=False ' ferme sans enregistrer les modifications
Exemple concret : une macro de consolidation mensuelle ouvre tour à tour trois classeurs de succursales différentes, en extrait un total par classeur, puis les referme sans les modifier — en utilisant systématiquement ThisWorkbook pour désigner le classeur de consolidation lui-même, la macro reste fiable même si l'utilisateur clique sur un des classeurs de succursale pendant l'exécution.
À vous de jouer : dans vos propres mots, expliquez la différence entre ThisWorkbook et ActiveWorkbook, puis donnez un exemple de situation où utiliser le mauvais des deux causerait un bug.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 76 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès