CathyAstuce

VBA

GEMCCAP CONSEIL INFORMATIQUE BUREAUTIQUE
Formation - Conception Sites Internet
Applications Informatiques Personnalisées
Communauté partenaire Microsoft

LES BARRES D'OUTILS ET DE MENUS

  La collection
Ajouter/supprimer une barre

Afficher/masquer une barre
Les contrôles sur les barres d'outils  
La collection
Ajouter/supprimer une barre
Modifer un contrôle 
  Une zone de texte
Une liste déroulante


Remonter I. La collection

La collection CommandBars représente l'ensemble des barres de menus et d'outils, chacune étant un objet CommandBar.

Pour travailler avec une barre, vous pouvez utiliser les syntaxes suivantes :

  • CommandBars(n) où n représente l'index de la barre . Difficile de savoir quel est l'index d'une barre précise.
  • CommandBars("nom de la barre") où "nom de la barre" représente son nom en anglais. Par exemple pour la barre d'outils Mise en forme, son nom est Formatting.

L'exemple suivant vous permet d'inscrire dans un classeur le nom des barres d'outils dans votre langue (NameLocal) et en anglais (Name), ainsi que son Index.

Sub ListeBarre()
     Dim cbar As CommandBar

     For Each cbar In Application.CommandBars 'pour chaque barre de l'application
          ActiveCell = cbar.Index                      'index de la barre dans la cellule active
          ActiveCell.Offset(0, 1) = cbar.NameLocal 'nom local de la barre dans la cellule située à droite de la cellule active
          ActiveCell.Offset(0, 2) = cbar.Name ' nom de la barre dans la cellule située à 2 colonnes à droite de la cellule active
          ActiveCell.Offset(1, 0).Select 'sélection de la cellule situé sous la cellule active
     Next
End Sub

Remonter II. Ajouter/Supprimer une barre

Pour ajouter une barre, il suffit d'utiliser la méthode Add ainsi :

Application.CommandBars.Add "nom de votre barre", [position], [MenuBar], [Temporary]

Les paramètres entre crochets ne sont pas obligatoires, si elles ne sont pas indiquées, la valeur par defaut est appliquée

  • position correspond à la position de la barre dans Excel : msoBarLeft (à gauche), msoBarTop (en haut), msoBarRight (à droite), msoBarBottom ( en bas) , msoBarFloating (flottante), msoBarPopup (menu contextuel). Par défaut : msoBarFloating.
  • MenuBar doit être à True si vous voulez remplacer la barre d'outils active.  Par défaut : False
  • Temporary doit être à True pour que la barre soit temporaire, dans ce cas elle disparaît à la fermeture d'Excel. Par défaut : False

Pour supprimer une barre :

Application.CommandBars("nom de votre barre").Delete

Pour ne pas supprimer une barre d'outils prédéfinis, il vous faut vérifier si la barre d'outils est une barre d'outils personnalisée ou prédéfinie, la propriété BuiltIn est False dans le cas d'une barre d'outils personnalisées. L'exemple suivant, supprime toutes les barres personnalisées que vous avez créées dans Excel :

Sub SupprBarrePerso()
     Dim cbar As CommandBar

     For Each cbar In Application.CommandBars
          If Not cbar.BuiltIn Then cbar.Delete 'si non prédéfinie alors suppression
     Next
End Sub

Remonter III. Afficher/masquer une barre

Pour afficher, vous pouvez la rendre visible, pour la masquer, vous pouvez soit la rendre invisible, soit la rendre inactive.

  • Pour la rendre visible (par ex. avec la barre standard) :
    Application.CommandBars("Standard").Visible = True
  • Pour la rendre invisible :
    Application.CommandBars("Standard").Visible = False
  • pour la rendre inactive et donc inaccessible :
    Application.CommandBars("Standard").Enabled = False
  • vous devrez alors la rendre active ainsi :
    Application.CommandBars("Standard").Enabled = True

Cette dernière méthode est préférable pour masquer toutes les barres affichées puis faire réapparaître uniquement seulement qui était affichées comme dans les 2 exemples suivants :

Sub MasqueBarre()
     Dim cbar As CommandBar

     For Each cbar In Application.CommandBars 'pour chaque barre de l'application
          cbar.Enabled = False                         'inactivation de la barre
     Next
End Sub

Sub AffichBarre()
     Dim cbar As CommandBar

     For Each cbar In Application.CommandBars 'pour chaque barre de l'application
          cbar.Enabled = True                          'activation de la barre
     Next
End Sub

AccueilDébut de la page