Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Macros et langage VBA
  3. Manipuler les feuilles Excel
Extrait - Macros et langage VBA  Découvrez la programmation sous Excel (2e édition)
Extraits du livre
Macros et langage VBA Découvrez la programmation sous Excel (2e édition)
6 avis
Revenir à la page d'achat du livre

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.

images/14SOB02N.png

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 1 et 3.

Cette approche est possible lorsque vous connaissez l’ordre d’affichage des feuilles au sein de votre classeur. Vous retrouvez ici le mot-clé Set, vu dans le chapitre précédent Manipuler les cellules Excel. Il reste de mise pour les feuilles.

Affectation en utilisant le nom de la feuille

Il peut arriver que vous ne sachiez pas à quel emplacement se situe votre feuille par rapport aux autres au sein de votre classeur. Dans pareille situation, il est possible d’utiliser le nom de la feuille.

Set wsh = Worksheets("Feuil1") 

Exemple 11 : affectation selon le nom de la feuille

Cette méthode vous permet de vous affranchir de l’ordre dans lequel vous ordonnez vos feuilles.

Affectation en pointant sur la feuille active

Dans le cas où vous souhaitez affecter la feuille active à une variable, sans que vous ne sachiez pas à l’avance ni l’indice de la feuille ni son nom, vous utiliserez...

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.

images/14SOB02N.png

 Double cliquez sur la feuille qui vous intéresse pour ouvrir le module lié à la feuille.

Au-dessus de la zone de code, se trouvent deux zones de liste déroulante.

 Sélectionnez Worksheet dans la liste de gauche pour faire apparaître l’ensemble des évènements qu’Excel...

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...