Feuilles VBA - Le guide ultime

Ceci est le guide ultime pour travailler avec Sheets / Worksheets dans Excel.

Au bas de ce guide, nous avons créé un aide-mémoire des commandes courantes pour travailler avec des feuilles.

Feuilles Vs. Des feuilles de calcul

Il existe deux façons de référencer Sheets à l'aide de VBA. La première concerne l'objet Sheets :

1 Feuilles("Feuille1").Activer

L'autre est avec l'objet Worksheets :

1 Feuilles de calcul ("Feuille1").Activer

99% du temps, ces deux objets sont identiques. En fait, si vous avez recherché en ligne des exemples de code VBA, vous avez probablement vu les deux objets utilisés. Voici la différence :

La collection Sheets contient des feuilles de calcul ET des feuilles de graphique.

Utilisez donc Sheets si vous souhaitez inclure des feuilles de calcul ET des feuilles de graphique ordinaires. Utilisez des feuilles de calcul si vous souhaitez exclure les feuilles de graphique. Pour le reste de ce guide, nous utiliserons indifféremment Sheets et Worksheets.

Fiches de référencement

Il existe plusieurs manières de référencer Sheets :

  • Feuille active
  • Nom de l'onglet de la feuille
  • Numéro d'index de la feuille
  • Nom du code de la feuille

Feuille active

La feuille active est la feuille actuellement active. En d'autres termes, si vous avez mis votre code en pause et regardé Excel, c'est la feuille qui est visible. L'exemple de code ci-dessous affichera une boîte de message avec le nom ActiveSheet.

1 MsgBox ActiveSheet.Name

Nom de la feuille

Vous êtes probablement plus familier avec le référencement des feuilles par leur nom d'onglet :

1 Sheets("TabName").Activer

Numéro d'index de la feuille

Le numéro d'index de la feuille correspond à la position de la feuille dans le classeur. 1 est la première feuille. 2 est la deuxième feuille, etc. :

1 Feuilles(1).Activer

Numéro d'index de la feuille - Dernière feuille du classeur

Pour référencer la dernière feuille du classeur, utilisez Sheets.Count pour obtenir le dernier numéro d'index :

1 Sheets(Sheets.Count).Activer

Fiche « Nom de code »

Le nom du code de la feuille est le nom de l'objet en VBA :

1 NomCode.Activer

Référencer des feuilles dans d'autres classeurs

Il est également facile de référencer des feuilles dans d'autres classeurs. Pour ce faire, vous devez utiliser l'objet Workbooks :

1 Workbooks("VBA_Examples.xlsm").Worksheets("Sheet1").Activer

Important: Le classeur doit être ouvert avant de pouvoir référencer ses feuilles.

Activer ou sélectionner une feuille

Dans un autre article, nous discutons de tout sur l'activation et la sélection des feuilles. La version courte est la suivante :

Lorsque vous activez une feuille, elle devient ActiveSheet. C'est la feuille que vous verriez si vous regardiez votre programme Excel. Une seule feuille peut être activée à la fois.

Activer une feuille

1 Feuilles("Feuille1").Activer

Lorsque vous sélectionnez une feuille, elle devient également la feuille active. Cependant, vous pouvez sélectionner plusieurs feuilles à la fois. Lorsque plusieurs feuilles sont sélectionnées à la fois, la feuille « supérieure » est la feuille ActiveSheet. Cependant, vous pouvez basculer l'ActiveSheet dans les feuilles sélectionnées.

Sélectionnez une feuille

1 Feuilles("Feuille1").Sélectionnez

Sélectionnez plusieurs feuilles

Utilisez un tableau pour sélectionner plusieurs feuilles à la fois :

1 Feuilles de calcul(Array("Feuille2", "Feuille3")).Sélectionnez

Variable de feuille de calcul

Affecter une feuille de calcul à une variable vous permet de référencer la feuille de calcul par son nom de variable. Cela peut économiser beaucoup de frappe et rendre votre code plus facile à lire. Il existe également de nombreuses autres raisons pour lesquelles vous pourriez vouloir utiliser des variables.

Pour déclarer une variable de feuille de calcul :

1 Dim ws comme feuille de calcul

Affectez une feuille de calcul à une variable :

1 Définir ws = Sheets("Sheet1")

Vous pouvez maintenant référencer la variable de feuille de calcul dans votre code :

1 ws.Activer

Parcourir toutes les feuilles du classeur

Les variables de feuille de calcul sont essentielles lorsque vous souhaitez parcourir toutes les feuilles de calcul d'un classeur. La façon la plus simple de le faire est :

12345 Dim ws comme feuille de calculPour chaque ws dans les feuilles de calculMsgBox ws.nameWS suivant

Ce code parcourra toutes les feuilles de calcul du classeur, affichant chaque nom de feuille de calcul dans une boîte de message. La lecture en boucle de toutes les feuilles d'un classeur est très utile pour verrouiller/déverrouiller ou masquer/afficher plusieurs feuilles de calcul à la fois.

Protection des feuilles de calcul

Protection du classeur

La protection du classeur verrouille le classeur contre les modifications structurelles telles que l'ajout, la suppression, le déplacement ou le masquage de feuilles de calcul.

Vous pouvez activer la protection des classeurs à l'aide de VBA :

1 Mot de passe ActiveWorkbook.Protect : ="Mot de passe"

ou désactiver la protection du classeur :

1 ActiveWorkbook.UnProtect Password:="Mot de passe"

Remarque : Vous pouvez également protéger/déprotéger sans mot de passe en omettant l'argument Mot de passe :

1 ActiveWorkbook.Protect

Protection des feuilles de calcul

La protection au niveau de la feuille de calcul empêche les modifications apportées aux feuilles de calcul individuelles.

Protéger la feuille de calcul

1 Feuilles de calcul ("Feuille1").Protéger "Mot de passe"

Déprotéger la feuille de calcul

1 Feuilles de calcul ("Feuille1"). Déprotéger "Mot de passe"

Il existe une variété d'options lors de la protection des feuilles de calcul (autoriser les modifications de formatage, permettre à l'utilisateur d'insérer des lignes, etc.) Nous vous recommandons d'utiliser l'enregistreur de macros pour enregistrer les paramètres souhaités.

Nous discutons plus en détail de la protection des feuilles de calcul ici.

Propriété visible de la feuille de calcul

Vous savez peut-être déjà que les feuilles de calcul peuvent être masquées :

Il existe en fait trois paramètres de visibilité de la feuille de calcul : Visible, Masqué et Très caché.Les feuilles masquées peuvent être affichées par n'importe quel utilisateur Excel ordinaire - en cliquant avec le bouton droit dans la zone d'onglet de la feuille de calcul (illustré ci-dessus). Les feuilles VeryHidden ne peuvent être affichées qu'avec le code VBA ou à partir de l'éditeur VBA. Utilisez les exemples de code suivants pour masquer/afficher des feuilles de calcul :

Afficher la feuille de calcul

1 Feuilles de calcul ("Feuille1").Visible = xlFeuilleVisible

Masquer la feuille de calcul

1 Feuilles de calcul ("Feuille1").visible = xlSheetHidden

Feuille de travail très cachée

1 Feuilles de calcul ("Feuille1").Visible = xlSheetVeryHidden

Événements au niveau de la feuille de calcul

Les événements sont des déclencheurs qui peuvent entraîner l'exécution de « Procédures d'événement ». Par exemple, vous pouvez faire en sorte que le code s'exécute chaque fois qu'une cellule d'une feuille de calcul est modifiée ou lorsqu'une feuille de calcul est activée.

Les procédures d'événement de feuille de calcul doivent être placées dans un module de feuille de calcul :

Il existe de nombreux événements de feuille de calcul. Pour voir une liste complète, accédez à un module de feuille de calcul, sélectionnez « Feuille de calcul » dans la première liste déroulante. Sélectionnez ensuite une procédure événementielle dans la deuxième liste déroulante pour l'insérer dans le module.

Feuille de travail Activer l'événement

Les événements d'activation de la feuille de calcul s'exécutent à chaque ouverture de la feuille de calcul.

123 Sous-feuille de travail privée_Activer()Plage ("A1").SélectionnezFin du sous-marin

Ce code sélectionnera la cellule A1 (réinitialiser la zone d'affichage en haut à gauche de la feuille de calcul) chaque fois que la feuille de calcul est ouverte.

Événement de modification de feuille de calcul

Les événements de modification de feuille de calcul s'exécutent chaque fois qu'une valeur de cellule est modifiée dans la feuille de calcul. Lisez notre didacticiel sur les événements de changement de feuille de travail pour plus d'informations.

Feuille de triche

Vous trouverez ci-dessous une aide-mémoire contenant des exemples de code courants pour travailler avec des feuilles en VBA

Feuilles de calcul VBA

Feuilles de travail VBA
La descriptionExemple de code
Référencement et activation des feuilles
Nom de l'ongletSheets("Entrée").Activer
Nom de code VBAFeuille1.Activer
Position de l'indexFeuilles(1).Activer
Sélectionner une feuille
Sélectionner une feuilleFeuilles("Entrée").Sélectionnez
Définir sur VariableDim ws comme feuille de calcul
Définir ws = ActiveSheet
Nom / RenommerActiveSheet.Name = "NouveauNom"
Feuille suivanteActiveSheet.Next.Activate
Parcourir toutes les feuillesDim ws comme feuille de calcul
Pour chaque ws dans les feuilles de calcul
Msgbox ws.name
WS suivant
Parcourir les feuilles sélectionnéesDim ws As Feuille de calcul
Pour chaque ws dans ActiveWindow.SelectedSheets
MsgBox ws.Name
WS suivant
Obtenir ActiveSheetMsgBox ActiveSheet.Name
Ajouter une feuilleFeuilles.Ajouter
Ajouter une feuille et un nomSheets.Add.Name = "NewSheet"
Ajouter une feuille avec le nom de la celluleSheets.Add.Name = range("a3").value
Ajouter une feuille après une autreSheets.Ajouter après : = Sheets("Entrée")
Ajouter une feuille après et un nomSheets.Add(After :=Sheets("Input")).Name = "NewSheet"
Ajouter une feuille avant et un nomSheets.Add(Before:=Sheets("Input")).Name = "NewSheet"
Ajouter une feuille à la fin du classeurSheets.Add After : = Sheets(Sheets.Count)
Ajouter une feuille au début du classeurSheets.Add(Before:=Sheets(1)).Name = "FirstSheet"
Ajouter une feuille à la variableDim ws As Feuille de calcul
Définir ws = Sheets.Add
Copier des feuilles de calcul
Déplacer la feuille à la fin du classeurSheets("Sheet1").Déplacer après :=Sheets(Sheets.Count)
Vers un nouveau classeurFeuilles("Feuille1").Copier
Feuilles sélectionnées vers un nouveau classeurActiveWindow.SelectedSheets.Copy
Avant une autre feuilleSheets("Sheet1").Copier avant :=Sheets("Sheet2")
Avant la première feuilleFeuilles("Feuille1").Copier avant :=Feuilles(1)
Après la dernière feuilleSheets("Sheet1").Copier après :=Sheets(Sheets.Count)
Copie et nomSheets("Sheet1").Copier après :=Sheets(Sheets.Count)
ActiveSheet.Name = "LastSheet"
Copier et nommer à partir de la valeur de la celluleSheets("Sheet1").Copier après :=Sheets(Sheets.Count)
ActiveSheet.Name = Range("A1").Valeur
Vers un autre classeurSheets("Sheet1").Copier avant :=Workbooks("Example.xlsm").Sheets(1)
Masquer / Afficher les feuilles
Masquer la feuilleSheets("Sheet1").visible = False
ou
Sheets("Sheet1").visible = xlSheetHidden
Afficher la feuilleSheets("Sheet1").Visible = True
ou
Feuilles("Feuille1").Visible = xlFeuilleVisible
Feuille très cachéeSheets ("Feuille1").Visible = xlSheetVeryHidden
Supprimer ou effacer des feuilles
Supprimer la feuilleFeuilles("Feuille1").Supprimer
Supprimer la feuille (traitement des erreurs)En cas d'erreur Reprendre ensuite
Feuilles("Feuille1").Supprimer
En cas d'erreur GoTo 0
Supprimer la feuille (sans invite)Application.DisplayAlerts = Faux
Feuilles("Feuille1").Supprimer
Application.DisplayAlerts = True
Feuille claireSheets("Sheet1").Cells.Clear
Effacer le contenu de la feuille uniquementSheets("Sheet1").Cells.ClearContents
Effacer la feuille UsedRangeSheets("Sheet1").UsedRange.Clear
Protéger ou déprotéger les feuilles
Déprotéger (pas de mot de passe)Sheets("Sheet1").Déprotéger
Déprotéger (mot de passe)Sheets("Sheet1").Déprotéger "Mot de passe"
Protéger (pas de mot de passe)Feuilles("Feuille1").Protéger
Protéger (mot de passe)Sheets("Sheet1").Protéger "Mot de passe"
Protéger mais autoriser l'accès VBASheets("Sheet1").Protect UserInterfaceOnly :=True
Déprotéger toutes les feuillesDim ws As Feuille de calcul
Pour chaque ws dans les feuilles de calcul
ws.Déprotéger le "mot de passe"
WS suivant
wave wave wave wave wave