Comment créer un sommaire automatique et généré en 1 clic sur Excel

Comment créer un sommaire qui se génère automatiquement sur EXCEL ? Dans ce tutoriel, nous allons voir comment créer rapidement un sommaire automatique qui va permettre d’accéder en un clic à l’ensemble des feuille de calcul d’un classeur.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

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

Dans un précédent tutoriel, nous avions vu ensemble comment récupérer le nom de la feuille de calcul active au travers de deux méthodes :

  • Tout d’abord en utilisant la formule CELLULE qui permet d’obtenir des informations sur la cellule dans laquelle celle-ci est insérée, mais également sur le document de travail. Nous avions alors vu qu’en retraitant les informations retournées, nous pouvions alors récupérer le nom de la feuille active,
  • Puis dans un second temps, nous avions vu qu’en utilisant la puissance apportée par VBA nous pouvions également récupérer le nom de la feuille active

À la suite de ce tutoriel, vous avez été plusieurs à me demander comment faire pour récupérer le nom de toutes les feuilles, et non pas seulement celui de la feuille active.

Évidemment, cette opération va être un peu plus complexe et nous allons forcément devoir développer une petite macro-commande VBA pour y parvenir.

Mais rassurez-vous, cette macro-commande ne présente aucune difficulté particulière, y compris pour les personnes n’ayant jamais pratiqué le VBA.

 

2. Création de la macro-commande VBA

Pour commencer nous allons simplement créer une macro-commande VBA que nous allons appeler « creerSommaire » et que nous allons insérer dans un nouveau module du projet.

Pour tout savoir sur le VBA, je vous invite à suivre la formation gratuite offert sur Excelformation.fr, à laquelle vous accèderez en cliquant ici.

Voici la démarche pour créer la macro :

Excel formation - 031 Sommaire sur Excel - 01

  • Lorsque l’éditeur de code est lancé, nous pouvons créer un nouveau Module, en cliquant sur Insertion > Module :

Excel formation - 031 Sommaire sur Excel - 02

  • Et enfin, nous pouvons créer notre macro dans ce nouveau module

 

Sub creerSommaire()
End Sub 

 

 

3. Créer une nouvelle feuille de calcul pour le sommaire

Pour créer une nouvelle feuille de calcul dans un classeur, il suffit d’utiliser l’instruction Sheets.Add.

Par défaut, la cette nouvelle feuille est insérée juste avant la feuille de calcul active. Pour modifier ce comportement, il est possible d’utiliser les paramètres Before ou After en spécifiant après ou avant quelle feuille de calcul nous souhaitons que la nouvelle feuille de calcul se trouve.

S’agissant d’un sommaire, nous allons logiquement vouloir que celle-ci se retrouve au tout début du classeur :

 

 Sub creerSommaire()
    Sheets.Add before:=Worksheets(1)    ' Worksheets(1) correspond à la toute première feuille de calcul du classeur
End Sub 

 

Ensuite, pour identifier facilement la feuille de calcul dans laquelle nous allons insérer le sommaire, nous allons modifier son nom grâce à l’instruction ActiveSheet.Name :

 

ActiveSheet.Name = "SOMMAIRE"
     …

 

Et nous allons insérer un premier texte dans la cellule A1 :

 

    …
    [a1] = "SOMMAIRE DU CLASSEUR :"
     …

 

Pour tester le bon fonctionnement de la macro-commande, nous pouvons lancer celle-ci une première fois en cliquant sur le bouton d’exécution (ou en appuyant sur la touche [F5]) depuis l’éditeur de code :

Excel formation - 031 Sommaire sur Excel - 03

Normalement, vous devriez avoir une nouvelle feuille de calculs portant le nom de « SOMMAIRE » et dans laquelle la cellule « A1 » a pour valeur « SOMMAIRE DU CLASSEUR : » :

Excel formation - 031 Sommaire sur Excel - 04

À ce moment-là, si nous lançons la macro une seconde fois, nous allons avoir une erreur d’exécution :

Excel formation - 031 Sommaire sur Excel - 05

Pas d’inquiétude, cette erreur est tout à fait normale. En effet, nous demandons à Excel de créer une nouvelle feuille, puis de la renommer en « SOMMAIRE », alors que nous avions déjà une feuille de calcul avec ce nom !

Il est donc nécessaire de supprimer au préalable cette feuille de calcul, en insérant le code suivant au tout début de la macro (avant la ligne Sheets.Add) :

 

    If Worksheets(1).Name = "SOMMAIRE" Then
        Application.DisplayAlerts = False
        Worksheets(1).Delete
        Application.DisplayAlerts = True
    End If 

 

Ce petit bout de code permet supprimer la première feuille de calcul du classeur lorsque celle-ci porte le nom de « SOMMAIRE ».

L’instruction Application.DisplayAlerts égale à false permet de ne pas afficher le message demandant la confirmation quant à la suppression de la feuille de calculs. Cela a pour effet de désactiver tous les messages d’alerte de VBA, nous pensons donc bien à les réactiver lorsque l’opération de suppression est accomplie.

Ne reste plus qu’à supprimer la nouvelle feuille créée par la macro (ici la feuille portant le nom de « Feuil2 ») afin que la feuille « SOMMAIRE » se retrouve en toute première position du classeur :

Excel formation - 031 Sommaire sur Excel - 06

Et maintenant nous devrions pouvoir tester d’exécuter la macro plusieurs fois de suite, sans que cela ne pose le moindre problème !

 

4. Lister toutes les feuilles du classeur

Maintenant que notre macro-commande est prête et paramétrée, nous allons pouvoir nous attaquer à la construction du sommaire à proprement parler.

Dans un premier temps, nous allons voir comment lister toutes les feuilles de calculs pour récupérer leur nom, puis dans un second temps, nous verrons comment créer un lien hypertexte pour accéder aux feuilles de calculs concernées.

Pour récupérer le nom des feuilles de calculs, nous allons lister tous les objets Worksheet présents dans la collection d’objets Worksheets.

Un objet Worksheet représente une feuille de calcul du classeur.

Voici le code permettant de récupérer les noms de feuilles, vous trouverez les explications directement dans les commentaires :

 

    
    Dim ligne As Integer                ' Création d'une
 variable pour sélectionner la ligne dans laquelle nous allons insérer le nom de
 la feuille
    ligne = 3                           ' Nous commençons le
 sommaire sur la ligne 3
    
    Dim sh As Worksheet                 ' Création d'un
 objet Worksheet
    For Each sh In Worksheets           ' Nous listons
 toutes les feuilles du classeur
        Cells(ligne, 1) = sh.Name       ' Nous affectons le
 nom de la feuille en cours à la première cellule de la ligne en cours
        ligne = ligne + 1               ' Puis nous passons
 à la ligne suivante
    Next                                ' Enfin, nous
 pouvons fermer la boucle et passer à la feuille suivante 

 

Avant de passer à l’étape suivante, vous pouvez tester le code :

Excel formation - 031 Sommaire sur Excel - 07

Si tout s’est bien passé, vous devriez retrouver le nom de chaque feuille de calcul directement dans la nouvelle feuille SOMMAIRE !

 

5. Création du lien hypertexte

À présent que nous savons comment récupérer les noms de chacune des feuilles de calcul, nous allons pouvoir simplement créer un lien hypertexte en VBA vers chacune d’elle afin de rendre le sommaire pleinement opérant.

Pour cela, deux possibilités s’offrent à nous :

  • Soit créer un lien hypertexte directement dans la cellule,
  • Soit utiliser la formule LIEN_HYPERTEXTE que nous avons déjà eu l’occasion de découvrir dans un précédent tutoriel

Pour plus de simplicité, nous allons utiliser la première solution.

Nous allons alors remplacer l’instruction qui permet de saisir le nom de la feuille dans la cellule en cours (Cells(ligne, 1) = sh.Name) par :

 

 …
ActiveSheet.Hyperlinks.Add anchor:=Cells(ligne, 1),
 Address:="", SubAddress:="'" & sh.Name &
 "'!A1", TextToDisplay:=sh.Name
…

 

Voici le détail de cette instruction :

  • ActiveSheet.Hyperlinks.Add : Ici, nous créons un lien hypertexte dans la feuille de calcul active,
  • anchor:=Cells(ligne, 1) : nous insérons ce lien dans la cellule en cours (situé sur la ligne retournée par la variable « ligne »),
  • Address:="", SubAddress:="'" & sh.Name & "'!A1" : pour créer un lien vers une cellule du classeur, nous devons utiliser le paramètre SubAddress (le paramètre Address reste vide), en spécifiant le nom de la feuille entre guillemets simple pour le cas où la feuille possèderait un espace, puis nous spécifions les coordonnées de la cellule sur laquelle nous souhaitons que le lien atterrisse après avoir saisi un point d’exclamation,
  • TextToDisplay:=sh.Name : et enfin, nous spécifions le texte que nous souhaitons afficher dans la cellule, ici le nom de la feuille

Excel formation - 031 Sommaire sur Excel - 08

Enfin, n’oubliez pas d’enregistrer le fichier sous le format *.xlsm afin que celui-ci sauvegarde la macro-commande ! Dans le contraire, tout votre travail sera perdu…

Vous pouvez évidemment télécharger le fichier de ce cours en suivant le lien situé en haut de l’article.

 



Articles qui pourraient vous intéresser

COMMENT CALCULER LE NOMBRE DE JOURS D’UN MOIS ET LE NOMBRE DE MERCREDIS SUR EXCEL

COMMENT MODIFIER LE NOMBRE DE FEUILLES INSÉRÉES PAR DÉFAUT DANS UN NOUVEAU CLASSEUR EXCEL

COMMENT EFFACER ET PERSONNALISER LA LISTE DES DOCUMENTS RÉCENTS D’EXCEL (la vraie méthode)

COMMENT CRÉER UNE BARRE DE PROGRESSION EN VBA A RÉUTILISER DANS TOUS VOS CLASSEURS EXCEL !

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire