Feuilles et classeurs
Dès qu'une macro travaille sur plusieurs feuilles ou plusieurs fichiers, il faut lui dire précisément où agir. Bien désigner feuilles et classeurs évite les macros qui écrivent au mauvais endroit.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Définition
Excel range ses objets comme des poupées russes : l'Application contient des classeurs (Workbooks), qui contiennent des feuilles (Worksheets), qui contiennent des cellules (Range).
Workbooks("Ventes.xlsx").Worksheets("Janvier").Range("B2").Value = 100
02Désigner une feuille
| Écriture | Désigne |
|---|---|
| Worksheets("Janvier") | la feuille nommée Janvier (nom de l'onglet) |
| Worksheets(1) | la première feuille, selon l'ordre des onglets |
| Feuil1 | la feuille par son nom de code, visible dans l'éditeur |
| ActiveSheet | la feuille affichée à l'écran |
| Sheets("Graph1") | comme Worksheets, mais inclut les feuilles graphiques |
Dans l'éditeur, chaque feuille a un nom de code (propriété Name dans la fenêtre Propriétés). Si l'utilisateur renomme l'onglet, Feuil1.Range("A1") continue de fonctionner, alors que Worksheets("Janvier") provoque l'erreur 9.
03ThisWorkbook ou ActiveWorkbook ?
ThisWorkbook
Le classeur qui contient la macro. Toujours le même, quel que soit le fichier affiché.
ActiveWorkbook
Le classeur affiché à l'écran. Il change dès qu'on ouvre ou qu'on active un autre fichier.
04Exemples à copier
Ajouter et renommer une feuille
Sub AjouterSynthese() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)) ws.Name = "Synthèse" End Sub
Supprimer une feuille sans message
Application.DisplayAlerts = False ThisWorkbook.Worksheets("Brouillon").Delete Application.DisplayAlerts = True
Ouvrir un fichier, copier, fermer
Sub ImporterDonnees() Dim wbSource As Workbook Set wbSource = Workbooks.Open("C:\Exports\export_ventes.xlsx") wbSource.Worksheets(1).Range("A1").CurrentRegion.Copy _ Destination:=ThisWorkbook.Worksheets("Import").Range("A1") wbSource.Close SaveChanges:=False End Sub
Le trait de soulignement en fin de ligne permet de couper une instruction trop longue sur deux lignes.
05Pièges à éviter
Une espace en trop ou un accent oublié dans Worksheets("Janvier ") déclenche l'erreur 9.
Après un Workbooks.Open, le classeur actif devient le fichier ouvert. Utilisez des variables (Set wbSource = ...) et ThisWorkbook pour ne jamais vous tromper de fichier.
Renommer une feuille avec un nom qui existe déjà provoque l'erreur 1004. Il en va de même pour les caractères interdits : / \ ? * [ ] :.
06Questions fréquentes
Comment désigner une feuille ou un classeur en VBA ?
Excel range ses objets comme des poupées russes : l'Application contient des classeurs (Workbooks), qui contiennent des feuilles (Worksheets), qui contiennent des cellules (Range).
Quel est le piège le plus fréquent avec les feuilles et les classeurs ?
Un nom d'onglet mal orthographié. Une espace en trop ou un accent oublié dans Worksheets("Janvier ") déclenche l'erreur 9.
La fiche « Feuilles et classeurs » est-elle gratuite ?
Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.
Passez de la fiche à la mise en situation
Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.
Découvrir l'étude de cas XL-05Toutes les fiches du cours VBA gratuit
Voir aussi le cours gratuit sur les formules Excel
Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA