Easy-Micro

ESPACEMEMBRE VBA
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


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

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

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

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

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


'Ajouter une barre
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

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

VBA 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

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


< Page précédente VBA Page suivante >