Création d’une liste de contenu pour une feuille de calcul avec Excel VBA

Outre le tri des feuilles, la création d’une table des matières pour un classeur est la macro la plus demandée dans Excel. Ce problème n’est probablement pas étranger aux lecteurs. Il arrive souvent que nous travaillions avec des fichiers contenant tellement de feuilles qu’il est difficile de les parcourir sans mentionner qu’ils restent cachés. La solution est une liste de contenu.
La macro suivante crée non seulement une telle liste basée sur les noms des feuilles du classeur, mais insère également un hypertexte dans celles-ci afin que vous puissiez accéder à l’emplacement souhaité en un seul clic.
Comment ca marche?
En lisant le code macro, il est facile de paniquer, car il se passe beaucoup de choses ici. Si, cependant, Faisons un pas en avant et regardons quelques opérations simples effectuées par macro, état c’est un peu moins terrible. Voici ses avantages:
• la macro supprime chaque version précédente de la liste de contenu,
• la macro crée une nouvelle feuille appelée table des matières,

• récupère le nom de chaque feuille et l’insère dans la liste du contenu,• ajoute un lien hypertexte à chaque élément de la liste de contenu.
Cela ne sonne pas si mal. Voyons maintenant le code:
Sub CreationListeFeuilles ()
'Etape 1: Déclaration des variables
Dim i As Long
'Étape 2: Suppression de la table de matière précédente, si elle existe
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Table des matières").Delete
Application.DisplayAlerts = True
On Error GoTo 0
'Étape 3: Insérer au début de la nouvelle feuille ST
ThisWorkbook.Sheets.Add Before:=ThisWorkbook.Worksheets(1)
ActiveSheet.Name = "Table des matières"
'Étape 4: Exécutez le compteur pour la variable i
For i = 1 To Sheets.Count
'Étape 5: Choisissez la ligne suivante
ActiveSheet.Cells(i, 1).Select
'Étape 6: insérez le nom de la feuille et le lien hypertexte
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(i, 1), Address:="", _SubAddress:="'" & Sheets(i).Name & "'!A1", TextToDisplay:=Sheets(i).Name
'Étape 7: Boucle augmentant la valeur du compteur pour i
Next i
End Sub

 

Commentaires
1. À la première étape, la variable (entier) est identifiée par le nom i, qui suivra le compteur lorsque la macro effectuera les itérations suivantes sur les feuilles. Il est à noter que la boucle dans cette macro utilise la feuille de calcul d’une manière différente de celle utilisée dans les parties précédentes. Les macros antérieures utilisées en boucle pour travailler sur la collection de feuilles et en sélectionnant chacune à son tour. Dans cette procédure, le compteur (c’est-à-dire la variable i) a été utilisé. La raison principale de cette solution est que nous devons non seulement garder une trace des feuilles de calcul, mais également réussir à entrer le nom de chacune d’elles dans une nouvelle ligne de la liste de contenu. Le fait est que le compte à rebours est également utilisé pour déplacer le curseur sur la liste de contenu, de sorte que de nouvelles entrées apparaissent dans les lignes suivantes.
2. Dans la deuxième étape, toutes les feuilles précédentes, appelées Table des matières, sont simplement supprimées. Toutefois, il se peut qu’il n’y ait pas de feuille de calcul de ce type; la deuxième étape doit donc commencer par la procédure de traitement de l’erreur On Error Resume Text. Ceci est une commande pour continuer la macro, même si l’erreur se produit. Une feuille appelée Table des matières est alors supprimée. Publié également la méthode DisplayAlerts pour exceler les messages Excel afin que vous ne deviez pas confirmer la suppression des feuilles. Enfin, la procédure de service d’erreur est annulée (instruction On Error GoTo 0).
3. Dans la troisième étape, une nouvelle feuille est insérée dans le classeur, qui sera placée au tout début (Procédure avant). Le nom du contenu lui sera donné. Comme mentionné précédemment, l’ajout d’une nouvelle feuille au classeur le rendra automatiquement actif. De ce fait, chaque visite à l’objet Acti veSheet fera référence à la feuille de la table des matières.
4. À la quatrième étape, le compteur de la valeur 1 commence, ce qui met fin à l’action sur la dernière feuille du classeur. Encore une fois, au lieu de parcourir la collection de feuilles de calcul, comme  dans les macros précédentes, nous utilisons simplement le compteur et comme index, les nombres qui seront transmis à l’objet Feuilles.
Après avoir atteint la dernière valeur de macro, terminez l’opération.
5. À l’étape 5, la ligne appropriée est sélectionnée dans la feuille de la table des matières. Il faut ajouter que si le compteur i est mis à 1, la première ligne sera sélectionnée dans la liste de la table des matières. Si le compteur est défini sur 2, une deuxième ligne, etc. sera sélectionnée.
C’est possible grâce à la méthode de la cellule qui offre un moyen extrêmement pratique de sélectionner des plages dans le code. Il suffit de saisir la position de la ligne et des colonnes qui constituent le point de référence. Ainsi, Cells (1, 1) désigne la première ligne, la première colonne (la cellule A1). À son tour, Cells (5, 3) désigne la ligne cinp, la troisième colonne (en d’autres termes, la liste déroulante C5). Les paramètres numériques dans Cells sont particulièrement pratiques lorsque vous devez exécuter une boucle pour une série de lignes ou de colonnes à l’aide de l’index.
6. Dans l’étape six, la méthode Hyperlinks.Add a été utilisée pour insérer le nom de la feuille en tant que lien hypertexte vers la cellule sélectionnée. Dans cette étape, les paramètres, k, sont entrés pour la méthode Hyperlinks.Add
il est nécessaire de créer un lien hypertexte.
7. Dans la dernière étape, la macro commence l’itération suivante en augmentant la valeur du compteur d’une position. Lorsque le compteur atteint le même nombre de feuilles dans le classeur, la macro termine l’opération.
Comment utiliser la macro?
Pour implémenter cette macro, vous pouvez copier et coller son code en mode standard.
À cette fin:
1. Utilisez les touches Alt + F11 pour activer Visual Basic Editor.
2. Dans la fenêtre Projet, cliquez avec le bouton droit sur le nom du projet ou de la feuille de calcul.
3. Sélectionnez Insérer / Module dans le menu.
4. Tapez ou collez le code dans le module nouvellement créé

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x