Excel · VBA · A3iformations

Les feuilles en VBA : Worksheet, Set, Add, Move, Delete, propriétés et événements

Un classeur contient une collection de feuilles : Worksheets. Chaque feuille est un objet Worksheet, que l’on désigne par son nom, son numéro ou son nom de code, que l’on range dans une variable avec Set, que l’on ajoute, déplace, copie ou supprime, dont on modifie les propriétés (nom, visibilité, couleur d’onglet), et qui réagit à des événements : activation, désactivation, double-clic. Chaque simulateur reproduit un classeur avec ses onglets et l’explorateur de projets de l’éditeur VBA. Voir aussi manipuler les cellules et les sélections.

Worksheets(« Sessions »)Désigner
Set ws = …Mémoriser
Add, Move, Copy, DeleteOrganiser
Worksheet_Activate…Réagir
1

Worksheet : désigner une feuille

On désigne une feuille de trois façons. Par son nom, celui de l’onglet : Worksheets("Sessions"). Par son numéro d’ordre (Index), de gauche à droite : Worksheets(1). Par son nom de code (CodeName), visible dans l’explorateur de projets : Feuil1. ActiveSheet désigne la feuille affichée. La collection Sheets contient en plus les feuilles graphiques ; pour des feuilles de calcul, Worksheets suffit. Préciser la feuille devant Range permet de lire ou d’écrire sans l’activer.

Simulateur : la collection Worksheets
Range sans feuilleRange("A1") seul agit sur la feuille active : si l’utilisateur a changé d’onglet, la macro écrit au mauvais endroit. Précisez la feuille.
Nom ou numéro ?Le numéro change dès qu’on déplace un onglet. Le nom est plus sûr, le CodeName encore plus : il ne change pas quand l’utilisateur renomme l’onglet.
2

Set : une variable de type Worksheet

Une feuille est un objet : pour la ranger dans une variable, on déclare Dim ws As Worksheet puis on l’affecte avec Set ws = Worksheets("Sessions"). Le mot-clé Set est obligatoire pour tout objet (feuille, plage, classeur) ; sans lui, VBA déclenche l’erreur 91. La variable rend le code plus court (ws.Range("A1")), plus rapide, et suit la feuille même si elle est renommée ou déplacée. Set ws = Nothing libère la variable.

Simulateur : Set, Nothing et l’erreur 91
WithWith Worksheets("Sessions") … .Range("A1").Value = … … End With évite aussi de répéter le nom de la feuille.
Is pour comparerDeux variables objet se comparent avec Is : If ws Is ActiveSheet Then, ou par leur nom : If ws.Name = "Archive" Then.
3

Add, Move et Delete : ajouter, déplacer, supprimer

Worksheets.Add insère une nouvelle feuille, par défaut avant la feuille active ; les arguments Before:= ou After:= choisissent l’emplacement, Count:= le nombre de feuilles. La méthode renvoie la nouvelle feuille, que l’on peut renommer aussitôt. .Move déplace une feuille, .Copy la duplique avec son contenu, .Delete la supprime après une confirmation, que Application.DisplayAlerts = False permet de masquer.

Simulateur : organiser les onglets
Suppression définitiveUne feuille supprimée par macro ne se récupère pas avec Ctrl + Z. Enregistrez avant de tester.
Tester l’existenceAvant d’ajouter une feuille « Bilan », vérifiez qu’elle n’existe pas : parcourez For Each ws In Worksheets et comparez ws.Name.
4

Principales propriétés d’une feuille

Les propriétés décrivent la feuille et se lisent ou se modifient comme des variables. Le tableau sous le simulateur affiche en permanence celles des feuilles du classeur, y compris les feuilles masquées.

PropriétéRôleExemple
.NameNom de l’onglet (31 caractères, sans : \ / ? * [ ])ws.Name = "Bilan 2026"
.IndexPosition de l’onglet, de gauche à droite (lecture seule)Debug.Print ws.Index
.CodeNameNom de code dans l’éditeur VBA (lecture seule en VBA)Feuil1
.VisibleVisible, masquée ou très masquéews.Visible = xlSheetVeryHidden
.Tab.ColorCouleur de l’ongletws.Tab.Color = RGB(0, 120, 212)
Worksheets.CountNombre de feuilles de calculWorksheets(Worksheets.Count) : la dernière
Simulateur : Name, CodeName, Visible, Tab.Color, Index
Feuille de paramètresxlSheetVeryHidden est idéal pour une feuille de paramètres ou de listes : invisible pour l’utilisateur, toujours lisible par les macros.
Autres propriétés utiles.UsedRange (la zone utilisée), .Cells, .Protect / .Unprotect, .PageSetup pour l’impression.
5

Les événements d’une feuille : Worksheet_Activate, Worksheet_Deactivate, Worksheet_BeforeDoubleClick

Une procédure événementielle s’exécute toute seule quand l’événement se produit. Elle s’écrit dans le module de la feuille (double-clic sur Feuil1 dans l’explorateur de projets, puis listes déroulantes Worksheet et Activate), pas dans un module standard. Worksheet_Activate se déclenche quand on arrive sur la feuille, Worksheet_Deactivate quand on la quitte, Worksheet_BeforeDoubleClick quand on double-clique sur une cellule : son argument Target désigne la cellule et Cancel = True annule l’action normale d’Excel (le mode Édition). Dans un module de feuille, Me désigne la feuille elle-même.

Simulateur : changez d’onglet, double-cliquez sur la colonne Présent de Stagiaires
Boucle d’événementsUne procédure Activate qui active une autre feuille déclenche d’autres événements. Encadrez le code avec Application.EnableEvents = False … True pour éviter les cascades.
Au niveau du classeurDans ThisWorkbook, Workbook_SheetActivate(ByVal Sh As Object) réagit à l’activation de toutes les feuilles avec une seule procédure.
Autres événementsWorksheet_Change (une cellule modifiée), Worksheet_SelectionChange (une autre cellule sélectionnée), Worksheet_BeforeRightClick.
Exercice : organiser le classeur des sessions

Classeur d’exercice (Énoncé et Corrigé)

  1. Enregistrez le classeur en .xlsm et collez le code de la feuille « Code VBA » dans un module standard, et les procédures événementielles dans les modules des feuilles indiquées.
  2. Exécutez Inventaire (Worksheets, For Each), puis CreerBilan (Set, Add, Name, Tab.Color).
  3. Exécutez Organiser (Move, Copy, Visible) puis Nettoyer (Delete, DisplayAlerts).
  4. Testez les événements : changez d’onglet, double-cliquez sur la colonne Présent de Stagiaires.
  5. Répondez aux questions de la feuille Contrôle.
A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA Interface Excel Microsoft 365 en français