- Feuilles Vs. Des feuilles de calcul
- Fiches de référencement
- Activer ou sélectionner une feuille
- Variable de feuille de calcul
- Parcourir toutes les feuilles du classeur
- Protection des feuilles de calcul
- Propriété visible de la feuille de calcul
- Événements au niveau de la feuille de calcul
- Feuille de triche
- Feuilles de calcul VBA
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 VBALa description | Exemple de code |
---|---|
Référencement et activation des feuilles | |
Nom de l'onglet | Sheets("Entrée").Activer |
Nom de code VBA | Feuille1.Activer |
Position de l'index | Feuilles(1).Activer |
Sélectionner une feuille | |
Sélectionner une feuille | Feuilles("Entrée").Sélectionnez |
Définir sur Variable | Dim ws comme feuille de calcul Définir ws = ActiveSheet |
Nom / Renommer | ActiveSheet.Name = "NouveauNom" |
Feuille suivante | ActiveSheet.Next.Activate |
Parcourir toutes les feuilles | Dim ws comme feuille de calcul Pour chaque ws dans les feuilles de calcul Msgbox ws.name WS suivant |
Parcourir les feuilles sélectionnées | Dim ws As Feuille de calcul Pour chaque ws dans ActiveWindow.SelectedSheets MsgBox ws.Name WS suivant |
Obtenir ActiveSheet | MsgBox ActiveSheet.Name |
Ajouter une feuille | Feuilles.Ajouter |
Ajouter une feuille et un nom | Sheets.Add.Name = "NewSheet" |
Ajouter une feuille avec le nom de la cellule | Sheets.Add.Name = range("a3").value |
Ajouter une feuille après une autre | Sheets.Ajouter après : = Sheets("Entrée") |
Ajouter une feuille après et un nom | Sheets.Add(After :=Sheets("Input")).Name = "NewSheet" |
Ajouter une feuille avant et un nom | Sheets.Add(Before:=Sheets("Input")).Name = "NewSheet" |
Ajouter une feuille à la fin du classeur | Sheets.Add After : = Sheets(Sheets.Count) |
Ajouter une feuille au début du classeur | Sheets.Add(Before:=Sheets(1)).Name = "FirstSheet" |
Ajouter une feuille à la variable | Dim ws As Feuille de calcul Définir ws = Sheets.Add |
Copier des feuilles de calcul | |
Déplacer la feuille à la fin du classeur | Sheets("Sheet1").Déplacer après :=Sheets(Sheets.Count) |
Vers un nouveau classeur | Feuilles("Feuille1").Copier |
Feuilles sélectionnées vers un nouveau classeur | ActiveWindow.SelectedSheets.Copy |
Avant une autre feuille | Sheets("Sheet1").Copier avant :=Sheets("Sheet2") |
Avant la première feuille | Feuilles("Feuille1").Copier avant :=Feuilles(1) |
Après la dernière feuille | Sheets("Sheet1").Copier après :=Sheets(Sheets.Count) |
Copie et nom | Sheets("Sheet1").Copier après :=Sheets(Sheets.Count) ActiveSheet.Name = "LastSheet" |
Copier et nommer à partir de la valeur de la cellule | Sheets("Sheet1").Copier après :=Sheets(Sheets.Count) ActiveSheet.Name = Range("A1").Valeur |
Vers un autre classeur | Sheets("Sheet1").Copier avant :=Workbooks("Example.xlsm").Sheets(1) |
Masquer / Afficher les feuilles | |
Masquer la feuille | Sheets("Sheet1").visible = False ou Sheets("Sheet1").visible = xlSheetHidden |
Afficher la feuille | Sheets("Sheet1").Visible = True ou Feuilles("Feuille1").Visible = xlFeuilleVisible |
Feuille très cachée | Sheets ("Feuille1").Visible = xlSheetVeryHidden |
Supprimer ou effacer des feuilles | |
Supprimer la feuille | Feuilles("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 claire | Sheets("Sheet1").Cells.Clear |
Effacer le contenu de la feuille uniquement | Sheets("Sheet1").Cells.ClearContents |
Effacer la feuille UsedRange | Sheets("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 VBA | Sheets("Sheet1").Protect UserInterfaceOnly :=True |
Déprotéger toutes les feuilles | Dim ws As Feuille de calcul Pour chaque ws dans les feuilles de calcul ws.Déprotéger le "mot de passe" WS suivant |