Ordinateurs

Excel VBA : Création d’un menu principal

J’utilise VBA/VB.Net pour créer de meilleures façons d’accomplir les tâches quotidiennes

excel-vba-créer-un-menu-principal

Création du menu

La première partie de la création d’un menu est la partie la plus simple. Créez une feuille appelée « Menu principal » et collez-la dans le premier emplacement de la barre d’onglets de la feuille en bas de l’écran (c’est donc l’index 1). Sur cette feuille, créez votre menu, pour l’instant nous allons le garder basique et avoir 3 boutons reliant à différentes feuilles dans le classeur comme ci-dessous

Une fois que vous avez créé votre menu principal, il est temps de commencer à écrire du code VBA pour que les boutons fassent ce que nous voulons.

  • Ouvrez l’éditeur VBA (ALT + F11)
  • dans le Fenêtre de projet (Fenêtre en haut à gauche), faites un clic droit et sélectionnez « Insérer » et alors module (pas ClassModule !)

Chaque bouton nécessitera son propre code, vous pouvez regrouper ces codes dans le module vous venez de créer et appelez chacun individuellement. Commençons donc par le bouton qui ouvrira la Feuille 2.

Tout d’abord, double-cliquez sur Module 1 dans le Fenêtre de projetdans la fenêtre en bas à gauche (Fenêtre Propriétés), renommez le module en « Menu_Buttons »

Le code suivant ouvrira la feuille 2 :

Public Sub Open_Sheet_2()

    Sheets("Sheet2").Activate

End Sub

Voyons donc rapidement en quoi consiste ce code. Tout d’abord, c’est vraiment bien de prendre l’habitude de nommer vos routines de manière appropriée, « Open_Sheet_2 » est agréable et facile à retenir et donne des détails sur ce que fait la routine.

A lire aussi :  Comment protéger par mot de passe un fichier texte

La ligne 3 est la ligne qui fait tout le travail, la section « Sheets( » du code indique à VBA que vous êtes sur le point de nommer une feuille, entre les guillemets se trouve alors le nom de la feuille tel qu’il apparaît dans Excel. fermé les guillemets et les crochets, le « .Activate » indique alors à VBA que vous souhaitez placer la feuille nommée dans le focus principal du classeur.

Avec tous les autres boutons, votre code devrait ressembler à ceci :

Public Sub Open_Sheet_2()

    Sheets("Sheet2").Activate

End Sub

Public Sub Open_Sheet_3()

    Sheets("Sheet3").Activate

End Sub

Public Sub Open_Sheet_4()

    Sheets("Sheet4").Activate

End Sub

Il faut maintenant lier le code aux boutons, c’est très simple ! Faites un clic droit sur un bouton et sélectionnez « Affecter une macro« . Dans le menu qui apparaît, sélectionnez la routine appropriée dans la liste, donc pour la feuille 2, sélectionnez « Open_Sheet_2 » de la liste.

Faites défiler pour continuer

Maintenant, cliquez sur votre bouton pour le tester !

Masquer des feuilles de la barre d’onglets

Dites simplement que vous avez 40 feuilles dans un classeur, même si vous avez un menu principal, il est toujours désordonné de regarder toutes ces feuilles en bas. Nous pouvons ajouter un peu plus de code à ce que nous avons déjà, et un bouton de plus, et nous pourrons masquer toutes les feuilles en 1 clic ! Lorsque la feuille est sélectionnée dans le menu principal, l’onglet de la feuille réapparaît en bas.

Créez un nouveau bouton dans le menu principal avec le texte « Fermer tous les onglets » à l’intérieur :

excel-vba-créer-un-menu-principal

Dans le même module vous avez fait plus tôt, ajoutez le code suivant :

Public Sub Close_All_Sheets()

'The below code states that each Worksheet that appears in the
'active workbook should be checked to see if its name is equal
'to "Main Menu". If it isn't then set its visibility to false

For Each Worksheet In ActiveWorkbook.Worksheets
    If Worksheet.Name <> "Main Menu" Then Worksheet.Visible = False
Next

End Sub

Comme l’indiquent les commentaires dans le code, ce code vérifiera toutes les feuilles et les fermera si elles ne s’appellent pas « Menu principal ». Vous devez maintenant affecter cette macro au bouton. Encore une fois, cliquez avec le bouton droit sur le bouton « Fermer tous les onglets » et attribuez la macro « Close_All_Sheets ».

A lire aussi :  8 modèles de planificateur de notions (agenda quotidien, hebdomadaire et mensuel)

Cliquez sur le bouton et regardez toutes les feuilles se fermer !

Maintenant, tout ce qu’il reste à faire est d’ajouter le code pour indiquer aux boutons de la feuille d’afficher la feuille que vous souhaitez ouvrir :

Public Sub Open_Sheet_2()
    
    Sheets("Sheet2").Visible = True
    'The above line makes the sheet
    'visible again
    
    Sheets("Sheet2").Activate

End Sub

Public Sub Open_Sheet_3()

    Sheets("Sheet3").Visible = True
    'The above line makes the sheet
    'visible again
    
    Sheets("Sheet3").Activate

End Sub

Public Sub Open_Sheet_4()
    Sheets("Sheet4").Visible = True
    'The above line makes the sheet
    'visible again
    
    Sheets("Sheet4").Activate

End Sub

Public Sub Close_All_Sheets()

'The below code states that each Worksheet that appears in the
'active workbook should be checked to see if its name is equal
'to "Main Menu". If it isn't then set its visibility to false

For Each Worksheet In ActiveWorkbook.Worksheets
    If Worksheet.Name <> "Main Menu" Then Worksheet.Visible = False
Next

End Sub

Avec le code complété ci-dessus, vous disposez maintenant d’un système de menu entièrement fonctionnel qui dévoile automatiquement n’importe quelle feuille, ainsi que la possibilité de masquer rapidement toutes les feuilles ouvertes.

Comment ça s’est passé ?

© 2014 Liam

Jimoh Lateef. jlateef2017@gmail.com le 30 janvier 2020 :

J’ai essayé le code ci-dessus. Tout est correct jusqu’au dernier niveau et testé correct. Mais après le dernier code, essayez de courir. Il continue d’afficher une boîte de dialogue écrite dessus. « Microsoft Visual Basic pour Applications ».  » Erreur de compilation : nom ambigu détecté : Open_Sheet_2. Je l’ai essayé maintes et maintes fois. Toujours le même message. Que dois-je faire ?

Bouton retour en haut de la page