Compréhension du modèle objet Excel
Glissez pour afficher le menu
Chaque ligne de VBA que vous écrirez dans Excel est une phrase à propos d’objets : quelque chose existe (une Application, un Workbook, une Worksheet, une Range), et vous lisez l’une de ses propriétés ou vous lui demandez d’exécuter l’une de ses méthodes. Une fois cette hiérarchie comprise, le reste du langage n’est qu’une question de vocabulaire.
Lecture de la hiérarchie
- Application — l’instance complète d’Excel en cours d’exécution ; le sommet de chaque hiérarchie ;
- Workbooks — la collection de tous les fichiers ouverts ; un seul est un Workbook, par exemple
Section_1_VBA_Intro.xlsm; - Worksheets — la collection d’onglets à l’intérieur d’un classeur ; un seul est une Worksheet, par exemple "Employees" ;
- Range — une cellule, un bloc de cellules, une ligne entière ou une colonne entière ;
- Cells / Value — les données réelles contenues dans une Range.
Il est rare de devoir saisir toute la chaîne depuis Application — VBA suppose que vous faites référence au classeur et à la feuille actifs, sauf indication contraire — mais nommer explicitement les objets distingue un code fragile d’un code fiable. Comparez ces deux façons d’écrire la même instruction :
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
La deuxième version continuera de fonctionner même si l'utilisateur a trois autres classeurs ouverts et une feuille différente sélectionnée — une habitude qui devient cruciale lorsque vos macros dépassent quelques lignes. Vous utiliserez constamment ThisWorkbook.Worksheets("SheetName") de cette manière tout au long du cours.
Navigation dans les relations d'objets via la fenêtre Exécution immédiate
La fenêtre Exécution immédiate (Affichage → Fenêtre Exécution immédiate ou Ctrl+G dans le VBE ; ^ ⌘ G sur Mac) permet de tester une seule ligne de code sans l'encapsuler dans une Sub.


Tapez une ligne commençant par un point d'interrogation puis appuyez sur Entrée pour voir immédiatement le résultat. Essayez ces exemples sur Section_1_VBA_Intro.xlsm :
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
La troisième ligne introduit CurrentRegion, une propriété qui s'étend d'une seule cellule à tout le bloc de données contigu autour d'elle.
Tâche
- Dans la fenêtre Exécution immédiate, écrire une ligne qui affiche le poste de
Olivia Brown(ligne 4) sans cliquer d'abord sur la cellule — faites référence directement via la hiérarchie des objets. - Écrire une deuxième ligne qui affiche le nombre de lignes dans la table Employees en utilisant
CurrentRegion.Rows.Count.
Faites référence comme ThisWorkbook.Worksheets("Employees").Range("D4").Value — la ligne 4 correspond à Olivia Brown, la colonne D correspond au poste.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Compréhension du modèle objet Excel
Chaque ligne de VBA que vous écrirez dans Excel est une phrase à propos d’objets : quelque chose existe (une Application, un Workbook, une Worksheet, une Range), et vous lisez l’une de ses propriétés ou vous lui demandez d’exécuter l’une de ses méthodes. Une fois cette hiérarchie comprise, le reste du langage n’est qu’une question de vocabulaire.
Lecture de la hiérarchie
- Application — l’instance complète d’Excel en cours d’exécution ; le sommet de chaque hiérarchie ;
- Workbooks — la collection de tous les fichiers ouverts ; un seul est un Workbook, par exemple
Section_1_VBA_Intro.xlsm; - Worksheets — la collection d’onglets à l’intérieur d’un classeur ; un seul est une Worksheet, par exemple "Employees" ;
- Range — une cellule, un bloc de cellules, une ligne entière ou une colonne entière ;
- Cells / Value — les données réelles contenues dans une Range.
Il est rare de devoir saisir toute la chaîne depuis Application — VBA suppose que vous faites référence au classeur et à la feuille actifs, sauf indication contraire — mais nommer explicitement les objets distingue un code fragile d’un code fiable. Comparez ces deux façons d’écrire la même instruction :
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
La deuxième version continuera de fonctionner même si l'utilisateur a trois autres classeurs ouverts et une feuille différente sélectionnée — une habitude qui devient cruciale lorsque vos macros dépassent quelques lignes. Vous utiliserez constamment ThisWorkbook.Worksheets("SheetName") de cette manière tout au long du cours.
Navigation dans les relations d'objets via la fenêtre Exécution immédiate
La fenêtre Exécution immédiate (Affichage → Fenêtre Exécution immédiate ou Ctrl+G dans le VBE ; ^ ⌘ G sur Mac) permet de tester une seule ligne de code sans l'encapsuler dans une Sub.


Tapez une ligne commençant par un point d'interrogation puis appuyez sur Entrée pour voir immédiatement le résultat. Essayez ces exemples sur Section_1_VBA_Intro.xlsm :
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
La troisième ligne introduit CurrentRegion, une propriété qui s'étend d'une seule cellule à tout le bloc de données contigu autour d'elle.
Tâche
- Dans la fenêtre Exécution immédiate, écrire une ligne qui affiche le poste de
Olivia Brown(ligne 4) sans cliquer d'abord sur la cellule — faites référence directement via la hiérarchie des objets. - Écrire une deuxième ligne qui affiche le nombre de lignes dans la table Employees en utilisant
CurrentRegion.Rows.Count.
Faites référence comme ThisWorkbook.Worksheets("Employees").Range("D4").Value — la ligne 4 correspond à Olivia Brown, la colonne D correspond au poste.
Merci pour vos commentaires !