Objet Barre
L'objet barre d'outils
Barre d'outil "Mail"
Exemple de procédure qui utilise la barre d'outils "Mail" d'Excel. Exmple valable sous toutes version d'Excel
Sub proc_envoyer_mail()
' Affiche barre d'outil mail d'Excel
ActiveWorkbook.EnvelopeVisible = True
With Sheets("Feuil1").MailEnvelope
.Introduction = "Sauf erreur ou omission de notre part..."
.Item.To = "vous@chezvous.fr"
.Item.CC = "eux@chezeux.fr"
.Item.Subject = "Votre encours client à régler en date du " & Format(Now(), "dd/mm/yyyy")
.Item.Send
End With
End Sub
' Affiche barre d'outil mail d'Excel
ActiveWorkbook.EnvelopeVisible = True
With Sheets("Feuil1").MailEnvelope
.Introduction = "Sauf erreur ou omission de notre part..."
.Item.To = "vous@chezvous.fr"
.Item.CC = "eux@chezeux.fr"
.Item.Subject = "Votre encours client à régler en date du " & Format(Now(), "dd/mm/yyyy")
.Item.Send
End With
End Sub
Masquer les barres d'outils
Exemple pour Excel 2003 max :
Sub MasqueBarre()
'Masque toutes les barres d'outils Standard, Mise en forme, Audit, Dessin, TCD...
Dim maBarre As Toolbar
For Each maBarre In Application.Toolbars
maBarre.Visible = False
Next maBarre
End Sub
'Masque toutes les barres d'outils Standard, Mise en forme, Audit, Dessin, TCD...
Dim maBarre As Toolbar
For Each maBarre In Application.Toolbars
maBarre.Visible = False
Next maBarre
End Sub
Désactiver les barres d'outils
Attention : Enabled = innaccessible! Exemple pour Excel 2003 max :
Sub DesactivelesBarres()
'Désactiver toutes les barres d'outils (attention: procédure dangeureuse)
'Enabled = désactivé, soit barre innacessible. Ne peut plus être ré-affichée.
Dim mabar As CommandBar
For Each mabar In Application.CommandBars
mabar.Enabled = False
Next
End Sub
'Désactiver toutes les barres d'outils (attention: procédure dangeureuse)
'Enabled = désactivé, soit barre innacessible. Ne peut plus être ré-affichée.
Dim mabar As CommandBar
For Each mabar In Application.CommandBars
mabar.Enabled = False
Next
End Sub
Note : pour réafficher toutes les barres, utiliser mabar.Enabled = True
Désactiver la barre des menu
Notez que la barre des menus ne peut pas être masquer)
Private Sub Workbook_Activate()
'Désactive la barre des menu (par le numéro)
Application.CommandBars(1).Enabled = True
'Désactive la barre des menu (par le nom)
Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub
'Désactive la barre des menu (par le numéro)
Application.CommandBars(1).Enabled = True
'Désactive la barre des menu (par le nom)
Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub
Note: Attention : Enabled = innaccessible !
SECURITE
Evitez d'utiliser la propriété Enabled (innaccessible) sur les barres d'outils, car vous ne pourrez pas les réafficher après exécution du code VBA.
Si on pert toutes les barres (dont la barre des menus!) pour les réafficher, fermer Excel et ouvrez le dossier "C:\Documents and Settings\Administrateur\Application Data\Microsoft\Excel\". Supprimer ensuite le fichier Excel "Excel10.xlb" ou "Excel11.xlb" (il s'agit d'un fichier de barre d'outils: eXceLBar) Relancer Excel.
Idéal: faire une copie du fichier avant de faire les tests. Ce fichier est créer à la première création d'une barre d'outils personalisée.
Masquer les autres barre d'outils
Private Sub Workbook_Activate()
'Affiche ou masque la barre Standard
Application.CommandBars("Standard").Visible = False
'Affiche ou masque la barre Mise en forme
Application.CommandBars("Formatting").Visible = False
'Affiche ou masque la barre des menus
Application.CommandBars("Worksheet Menu Bar").Visible = False
'Affiche ou masque la barre Formulaire
Application.CommandBars("Forms").Visible = True
'Affiche ou masque la boîte à outils control
Application.CommandBars("Control Toolbox").Visible = True
'Affiche ou masque la barre d'outils VBA
Application.CommandBars("Visual Basic").Visible = True
'Affiche ou masque la barre d'outils Plein écran
Application.CommandBars("Full Screen").Visible = False
End Sub
'Affiche ou masque la barre Standard
Application.CommandBars("Standard").Visible = False
'Affiche ou masque la barre Mise en forme
Application.CommandBars("Formatting").Visible = False
'Affiche ou masque la barre des menus
Application.CommandBars("Worksheet Menu Bar").Visible = False
'Affiche ou masque la barre Formulaire
Application.CommandBars("Forms").Visible = True
'Affiche ou masque la boîte à outils control
Application.CommandBars("Control Toolbox").Visible = True
'Affiche ou masque la barre d'outils VBA
Application.CommandBars("Visual Basic").Visible = True
'Affiche ou masque la barre d'outils Plein écran
Application.CommandBars("Full Screen").Visible = False
End Sub
Affichage ou non des options de la fenêtre active (la feuille) -> voir le menu outils/options
Private Sub Workbook_Activate()
'Affiche ou masque le quadrillage d'Excel
Apllication.ActiveWindow.DisplayGridlines = False
'Affiche ou masque les barres de défilement
Apllication.ActiveWindow.DisplayHorizontalScrollBar = False
Apllication.ActiveWindow.DisplayVerticalScrollBar = False
'Affiche ou masque les onglets des feuilles
Apllication.ActiveWindow.DisplayWorkbookTabs = False
End Sub
'Affiche ou masque le quadrillage d'Excel
Apllication.ActiveWindow.DisplayGridlines = False
'Affiche ou masque les barres de défilement
Apllication.ActiveWindow.DisplayHorizontalScrollBar = False
Apllication.ActiveWindow.DisplayVerticalScrollBar = False
'Affiche ou masque les onglets des feuilles
Apllication.ActiveWindow.DisplayWorkbookTabs = False
End Sub
'Ajouter une barre
Application.CommandBars.Add "mabarre", [position], [MenuBar], [Temporary]
Application.CommandBars.Add "mabarre", [position], [MenuBar], [Temporary]
• L'option "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.
• L'option "MenuBar" doit être à True si vous voulez remplacer la barre d'outils active, c'est à dire la barre des menus. Attention, cela fait disparaitre la barre des menus au profit de la votre. Par défaut : False
• L'optoin "Temporary" doit être à True pour que la barre soit temporaire, dans ce cas elle disparaît à la fermeture d'Excel. Par défaut : False
'Supprimer une barre
Application.CommandBars("nom de votre barre").Delete
Application.CommandBars("nom de votre barre").Delete
Afficher la liste des noms de barre d'outils:
Sub liste_des_noms_anglais_des_barres_doutils()
For i = 1 To Application.CommandBars.Count
Range("A" & i).Value = Application.CommandBars(i).Name
Next i
End Sub
For i = 1 To Application.CommandBars.Count
Range("A" & i).Value = Application.CommandBars(i).Name
Next i
End Sub
Barre d'outils Dynamique
Créer une barre d'outils avec un bouton, entierrement par le code
Sub proc_nouvelle_barre()
CommandBars("Mabarre").Delete ' au cas ou elle existe déjà
With CommandBars.Add(Name:="Mabarre")
With .Controls.Add(Type:=msoControlButton)
.OnAction = "proc_nouvelle_facture" ' nom de procédure à lancer
.FaceId = 33 'numéro du modèle de bouton (33:reveil, 1016:maison...)
.TooltipText = "Nouvelle Facture" 'info bulle
End With
.Visible = True
End With
End Sub
CommandBars("Mabarre").Delete ' au cas ou elle existe déjà
With CommandBars.Add(Name:="Mabarre")
With .Controls.Add(Type:=msoControlButton)
.OnAction = "proc_nouvelle_facture" ' nom de procédure à lancer
.FaceId = 33 'numéro du modèle de bouton (33:reveil, 1016:maison...)
.TooltipText = "Nouvelle Facture" 'info bulle
End With
.Visible = True
End With
End Sub
Private Sub proc_creation_nouveau_menu_dans_Excel_2003()
' Déclaration des variables
Dim var_menu_principal
Dim var_menu_secondaire1
Dim var_menu_secondaire2
Dim var_menu_secondaire3
' Création d'un nouveau menu
Set var_menu_principal = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, temporary:=True)
' On nomme ce menu "Easy-Micro"
var_menu_principal.Caption = "Easy-Micro"
' Rajout d'un sous menu au menu principal
Set var_menu_secondaire1 = var_menu_principal.Controls.Add(Type:=msoControlButton)
' Texte du sous menu (ici Action 1)
var_menu_secondaire1.Caption = "Action 1"
' Déclaration d'actions (qui sont des appels de procédure distante - ici proc_1)
var_menu_secondaire1.OnAction = "proc_1"
' Idem pour sous menu 2
Set var_menu_secondaire2 = var_menu_principal.Controls.Add(Type:=msoControlButton)
var_menu_secondaire2.Caption = "Action 2
" var_menu_secondaire2.OnAction = "proc_2"
' Idem pour sous menu 3
Set var_menu_secondaire3 = var_menu_principal.Controls.Add(Type:=msoControlButton)
var_menu_secondaire3.Caption = "Action 3"
var_menu_secondaire3.OnAction = "proc_3"
' Si on voulait supprimer le menu
' Application.CommandBars("Worksheet Menu Bar").Controls("Easy-Micro").Delete
End Sub
' Déclaration des variables
Dim var_menu_principal
Dim var_menu_secondaire1
Dim var_menu_secondaire2
Dim var_menu_secondaire3
' Création d'un nouveau menu
Set var_menu_principal = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, temporary:=True)
' On nomme ce menu "Easy-Micro"
var_menu_principal.Caption = "Easy-Micro"
' Rajout d'un sous menu au menu principal
Set var_menu_secondaire1 = var_menu_principal.Controls.Add(Type:=msoControlButton)
' Texte du sous menu (ici Action 1)
var_menu_secondaire1.Caption = "Action 1"
' Déclaration d'actions (qui sont des appels de procédure distante - ici proc_1)
var_menu_secondaire1.OnAction = "proc_1"
' Idem pour sous menu 2
Set var_menu_secondaire2 = var_menu_principal.Controls.Add(Type:=msoControlButton)
var_menu_secondaire2.Caption = "Action 2
" var_menu_secondaire2.OnAction = "proc_2"
' Idem pour sous menu 3
Set var_menu_secondaire3 = var_menu_principal.Controls.Add(Type:=msoControlButton)
var_menu_secondaire3.Caption = "Action 3"
var_menu_secondaire3.OnAction = "proc_3"
' Si on voulait supprimer le menu
' Application.CommandBars("Worksheet Menu Bar").Controls("Easy-Micro").Delete
End Sub