Manipuler les feuilles Excel
Objectifs du chapitre
Après avoir manipulé les cellules à l’intérieur de la feuille active, vient l’étape de manipuler les feuilles au travers du classeur.
Ce chapitre abordera l’objet Worksheet, qui représente une feuille (ou feuille de calcul) dans Excel, vous y verrez les principales propriétés et méthodes de la feuille. Vous aborderez ensuite la collection des feuilles d’un classeur Worksheets, pour y voir les actions qui sont les plus répandues.
Enfin, une série d’exercices vous permettra de valider vos nouveaux acquis
Collection des feuilles d’un classeur : Worksheets
Lorsque vous travaillez dans un classeur, chaque feuille de calcul est un objet de type Worksheet, et l’ensemble des feuilles se trouve dans une collection nommée Worksheets. Vous pourrez parcourir cette collection pour pointer sur la feuille de calcul que vous souhaitez. Vous pouvez également utiliser la collection Sheets. Cette collection contient aussi bien les feuilles de calcul que les feuilles graphiques. Dans un but de simplification, vous travaillerez dans ce chapitre, uniquement avec les feuilles de calcul et Worksheets.
Voici quelques exemples de programmes pour travailler avec l’objet Worksheets.
Afficher la liste des feuilles
Lorsque vous travaillez avec un classeur, il peut être intéressant de connaître la liste des feuilles de calcul. Le code suivant parcourt chaque élément de la collection Worksheets et affiche le nom de chaque feuille.
Sub ListeDesFeuilles()
Dim Feuille As Worksheet
For Each Feuille in Worksheets
'Afficher le nom de la feuille
MsgBox Feuille.Name
Next
End Sub
Exemple 1 : parcours de la collection Worksheets pour lire la liste des feuilles de calcul
Connaître le nombre de feuilles de calcul : Count
Pour connaître le nombre...
Objet Feuille de calcul : Worksheet
Dans cette section, vous allez en apprendre plus sur ce qu’est une feuille de calcul pour VBA, et comment l’utiliser selon vos besoins.
Feuilles de calcul dans l’interface VBE
Lorsque vous travaillez avec les feuilles Excel, vous pouvez les voir dans l’Explorateur de projet sous VBE.
Pour chacune des feuilles de votre classeur, vous verrez ainsi le nom de la feuille entre parenthèses et le CodeName (Feuil1 et Feuil2 dans l’image précédente). Cet identifiant est le nom de l’objet dans l’Éditeur de macros, il correspond au nom de la feuille dans Excel lors de sa création, mais reste inchangé lorsque vous renommez la feuille dans Excel.
La feuille active : ActiveSheet
Tout comme pour les cellules, il existe l’objet VBA ActiveSheet qui pointe sur la feuille active. Tout comme il ne peut y avoir qu’une seule cellule active, il n’y a qu’une feuille active.
'Affichage du nom de la feuille active dans la fenêtre d'exécution
Debug.Print ActiveSheet.Name
Exemple 8 : utilisation de la feuille active au travers de l’objet ActiveSheet
Déclaration d’un objet Worksheet
Tout comme vous l’avez vu pour l’objet Range, la déclaration et l’affectation d’un objet de type Worksheet est simple.
Dim wsh As Worksheet
Exemple 9 : déclaration d’une variable de type Worksheet
Affectation d’un objet Worksheet
Avant de pouvoir utiliser la variable de type Worksheet que vous venez de déclarer, il vous faut l’affecter.
Il existe quatre façons d’affecter une valeur à votre variable, les trois premières sont de loin les plus fréquentes.
Affectation à partir de l’indice de la feuille
Il est possible de pointer sur une feuille dans un classeur à partir de sa position dans celui-ci. La numérotation correspond à l’ordre des feuilles dans le classeur en allant de la gauche vers la droite et en commençant à 1.
Set wsh = Worksheets(1)
Exemple 10 : affectation selon l’indice de la feuille
Gardez en mémoire que les feuilles cachées sont incluses dans la numérotation. Ainsi, dans un classeur à trois feuilles, si la feuille 2 est cachée, vous ne voyez à l’écran que les feuilles...
Les événements dans les feuilles
Après avoir abordé les propriétés, puis les méthodes des feuilles, viennent les événements. Cette section a pour but de vous permettre de comprendre en quoi consiste un événement en VBA, comment créer un événement qui déclenchera une série d’instructions et enfin, vous présenter quelques événements qui concernent les feuilles de calcul.
Définition d’un événement en VBA
Qu’il s’agisse d’un clic sur un bouton, d’une validation dans une zone de texte ou d’une désactivation de feuille, un événement permet l’interaction entre votre programme et l’utilisateur. Ce sont des procédures Sub qui se déclenchent automatiquement selon une action qui est définie.
Les objets qui peuvent interagir au travers des événements sont les suivants : l’application Excel, les classeurs, les feuilles de calculs, les graphiques, les formulaires utilisateurs et enfin les contrôles.
Gestion des événements dans l’Éditeur de macros
Pour générer le code d’un événement dans l’Éditeur de macros, sélectionnez une des feuilles.
Double cliquez sur la feuille qui vous intéresse pour ouvrir le module lié...
Manipuler des données dans plusieurs feuilles
Maintenant que vous connaissez les instructions permettant de travailler avec les feuilles à l’intérieur d’un classeur, vous pouvez tirer profit des données situées sur plusieurs feuilles dans un classeur. Voici quelques exemples de manipulation de données sur plusieurs feuilles.
Copier depuis une feuille, coller dans une autre
Un des cas les plus fréquemment rencontrés sera la copie d’une plage de cellules depuis une feuille vers une autre. La méthode de copie Copy a été abordée dans le chapitre Manipuler les cellules Excel. Ici, le code vous permet de copier les données situées dans une feuille A, et de les coller dans une feuille B.
Worksheets("A").Range("A1:D1").Copy
Worksheets("B").Range("A1")
Exemple 29 : copie des données d’une feuille vers une autre
Comparer les données sur plusieurs feuilles
Lorsque vous souhaitez comparer des données ligne à ligne entre deux feuilles, bien que cela puisse parfois être fait uniquement avec des formules, une macro VBA peut être nécessaire.
Le code suivant vise à comparer les lignes entre deux feuilles nommées Attendu et Obtenu, sur la colonne A, et met une valeur X dans la colonne B de la feuille Attendu si les valeurs sont différentes....
Exercices
Cette série d’exercices se fera à la fois dans un module Chapitre_14_Feuilles et dans la feuille Exercices_ManipulationFeuilles. Les exercices suivis du symbole astérisque * seront à rédiger dans le module Chapitre_14_Feuilles.
Feuille active *
Dans le module Chapitre_14_Feuilles, créez une macro AfficherNomFeuilleActive.
Cette macro affichera le nom de la feuille active.
Activez la feuille Exercices_ManipulationFeuilles puis exécutez la macro AfficherNomFeuilleActive pour vérifier que votre programme fonctionne correctement. Effectuez plusieurs essais sur les autres feuilles du classeur.
Copie d’une feuille à l’autre *
Alors que cette manipulation fait partie des plus courantes, voici un exercice fort simple.
L’objectif est de créer une nouvelle feuille, d’y recopier les données que vous avez créées dans les exercices du chapitre précédent et de renommer cette feuille Feuille_Temporaire.
Créez une macro CreerRemplirEtNommerFeuille dans le module Chapitre_14_Feuilles.
Dans cette macro vous commencerez donc par déclarer une variable de type feuille (Worksheets), que vous nommerez wsh.
La macro ajoutera une nouvelle feuille et utilisera la variable wsh pour pointer sur cette nouvelle feuille. Vous nommerez cette nouvelle feuille Feuille_Temporaire.
La macro effectuera ensuite une copie...