Manipuler les feuilles de calculs en VBA avec l’objet Worksheet [#26 FORMATION EXCEL VBA COMPLETE]
Après avoir découvert dans le chapitre précédent toutes les manières de manipuler des cellules en VBA avec l’objet Range, nous nous retrouvons maintenant dans ce nouveau chapitre de la formation sur l’apprentissage du VBA pour découvrir comment manipuler l’objet Worksheet. Il s’agit de l’objet parent de l’objet Range qui va nous permettre cette fois-ci d’être en mesure de manipuler directement la feuille de calcul en cours de travail.
Téléchargement
Vous pouvez obtenir le fichier d'exemple de cet article et découvrir la méthode d'apprentissage de VBA pas-à-pas en cliquant sur le lien suivant :
Tutoriel Vidéo
Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !
1. Présentation
Pour manipuler des feuilles de calcul en VBA, nous utilisons l’objet Worksheet.
Toutes les feuilles de calcul d’un classeur sont réunies dans la collection Worksheets (au pluriel, avec un « s ») dépendant de l’objet parent Workbook (le classeur dans sa globalité).
Il s’agit de la collection qui contient toutes les feuilles de calcul du classeur.
Il s’agit également d’un membre de la collections Sheets qui en plus de détenir les feuilles de calculs (tout comme Worksheets) contient également les feuilles de graphiques.
Pour utiliser un objet Worksheet, nous pouvons indifféremment utiliser l’une de ces deux collections :
Sub manipulerLaFeuille()
' Masquer puis afficher la feuille de calculs
' en utilisant son numéro d'index
Worksheets(22).Visible = False
Sheets(22).Visible = True
End Sub
Ici nous utilisons l’index de la feuille, c’est-à-dire son numéro d’apparition dans la barre des onglets de l’interface Excel.
Nous utilisons une première fois la propriété Visible de la collection Worksheets pour masquer la 22ème feuille de calcul, puis nous la réaffichons en utilisant la même propriété, mais cette fois-ci en appelant la feuille de calcul contenue dans la collection Sheets.
Evidemment, connaître le numéro d’index d’une feuille de calcul peut vite devenir fastidieux, d’autant plus qu’il suffit de déplacer les feuilles dans le classeur pour que ce numéro en vienne à être modifié.
C’est pourquoi il est également possible d’appeler une feuille de calculs en utilisant le nom donné par l’utilisateur depuis l’interface d’Excel :
Sub manipulerLaFeuille()
' Masquer puis afficher la feuille de calculs
' en utilisant son numéro d'index
Worksheets(22).Visible = False
Sheets(22).Visible = True
End Sub
Le nom de la feuille se retrouve directement dans la fenêtre des propriétés.
Mais évidemment, si nous changeons le nom de la feuille depuis Excel, alors la macro ne pourra plus détecter la bonne feuille et la macro devient alors inutilisable !
La troisième méthode pour appeler une feuille de calculs consiste à utiliser son « nom de code » directement :
Ce nom de code ne pouvant être modifié que depuis VBA, il ne risque pas d’être modifié par inadvertance depuis Excel.
2. Activesheet : manipuler la feuille en cours
Tout comme il existe des objets Range particuliers (Selection, ActiveCell), il est tout à fait possible d’appeler la feuille de calcul actuellement active avec l’objet Activesheet :
Ici, nous commençons par sélectionner la feuille Feuil22 en l’appelant par son nom, puis nous affichons le contenu de la cellule A3 de cette même feuille dans la fenêtre d’Exécution.
3. Les principales méthodes
Voici une liste des principales méthodes de l’objet Worksheets à connaître pour développer des macros VBA :
Activate |
Permet de sélectionner une feuille de calcul |
Calculate |
Recalculer toutes les cellules de la feuille de calcul |
Copy |
Copier la feuille de calcul |
Paste |
Coller les cellules copiées dans une feuille de calcul |
Delete |
Supprimer une feuille de calcul |
Protect / Unprotect |
Protéger ou déprotéger une feuille de calcul |
' Lire la cellule A3 de la feuille Feuil22
With Feuil22
.Activate ' Activer la feuille 22
.Calculate ' Recalculer toutes les cellules de la feuille de calcul
.Copy ' Dupliquer la feuille
.Protect "motDePasse" ' Protéger
.Unprotect "motDePasse" ' Déprotéger
.Delete ' Supprimer la feuille
End With
Notes :
- Sans argument, la propriété méthode duplique la feuille de calcul en tant que nouveau classeur,
- La suppression d’une feuille demande par défaut une confirmation de la part de l’utilisateur :
4. Les principales propriétés
Voici une liste des principales propriétés de l’objet Worksheet :
Visible |
Afficher ou masquer une feuille de calcul |
Range / Cells |
Permet de manipuler les cellules, comme nous l’avons déjà étudié dans le chapitre précédent |
Calculate |
Recalculer toutes les cellules de la feuille de calcul |
Columns / Rows |
Manipuler une colonne ou une ligne |
Index |
Récupérer le numéro d’index d’une feuille |
Name |
Obtenir ou modifier le nom d’une feuille de calcul |
UsedRange |
Obtenir une plage de cellule contenant toutes les cellules utilisées sur la feuille de calcul |
' LISTE DES PROPRIETES
.Range("A8") = "Excelformation.fr" ' Insérer du texte en cellule A8
.Cells(9, "A") = "Excelformation.fr" ' Insérer du texte en cellule A9
.[A10] = "Excelformation.fr" ' Insérer du texte en cellule A10
.Calculate ' Procéder aux calculs de la feuille
.Rows(12).Interior.ColorIndex = 10 ' Manipuler une ligne
.Columns(12).Interior.ColorIndex = 10 ' Manipuler une colonne
Debug.Print "Feuille", .Name, .Index ' Obtenir l'index et le nom de la feuille
MsgBox "Cellules utilisées : " & .UsedRange.Address ' Obtenir les coordonnées de la plage des cellules utilisées