GRATUIT

Vos offres d'emploi informatique

Développeurs, chefs de projets, ingénieurs, informaticiens
Postez gratuitement vos offres d'emploi ici visibles par 4 000 000 de visiteurs uniques par mois

emploi.developpez.com

FAQ ExcelConsultez toutes les FAQ

Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireLes barres d'outils et les menus personnalisés

Cet exemple est placé dans le module objet du classeur et utilise l'évènement Workbook_Open.
De cette manière, la barre est créée automatiquement lors de l'ouverture du fichier.

Vba
Sélectionnez

Private Sub Workbook_Open()
    Dim CmdBar As CommandBar
    Dim Bouton As CommandBarButton
 
    'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars _
        .Add(Name:="MaBarrePerso", Position:=msoBarTop, Temporary:=True)
 
    'Ajout de 3 boutons dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 133
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Macro1"
    End With
 
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        .FaceId = 134
        .OnAction = "Macro2"
    End With
 
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
         .FaceId = 135
        .OnAction = "Macro3"
    End With
 
    CmdBar.Visible = True
End Sub




Ce deuxième code utilise l'évènement Workbook_BeforeClose et supprime la barre personnelle lors de la fermeture du classeur.

Vba
Sélectionnez

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.CommandBars("MaBarrePerso").Delete
End Sub




Rappel:
Dans Excel2007, les menus et barres d'outils personnels sont stockés dans l'onglet "Complément".

Créé le 2 octobre 2007  par SilkyRoad

Effectuez un clic droit sur les barres d'outils.
Sélectionnez l'option Personnaliser dans le menu contextuel.
La boîte de dialogue "Personnalisation" s'affiche à l'écran.
Refaites un clic droit dans les barres d'outils, sur le bouton dont vous souhaitez copier l'image.
Sélectionnez l'option "Copier l'image du bouton".
Vous pouvez ensuite effectuer un collage de l'image sur un autre bouton en sélectionnant l'option "Coller l'image du bouton".

Pour coller l'image dans la feuille de calcul, fermez la boîte de dialogue "Personnalisation", sélectionnez une cellule puis effectuez le collage (Ctrl+V).

Créé le 15 avril 2007  par SilkyRoad

Dans Excel 2002, par défaut seuls les derniers éléments récemment utilisés s'affichent lorsque vous cliquez sur un menu.

Pour afficher tous les éléments des menus:
Effectuez un clic droit sur la barre de menus.
Sélectionnez l'option Personnaliser.
Cliquez sur l'onglet Options.
Cochez la case Toujours afficher les menus dans leur intégralité.
Cliquez sur le bouton Fermer pour valider.

Créé le 15 avril 2007  par SilkyRoad

Effectuez un clic droit sur la barre de menus.
Sélectionnez l'option Personnaliser.
Sélectionnez l'onglet Commandes dans la boîte de dialogue Personnalisation.
Choisissez Outils dans la liste des catégories.
Sélectionnez Personnaliser (avec l'icône de la calculatrice sur la gauche) dans la liste des commandes.
Gardez le bouton gauche de la souris enfoncé et faites glisser la calculatrice jusqu'à l'emplacement de votre choix dans la barre de menus.

Pendant que la boîte de dialogue Personnalisation est affichée, vous pouvez modifier le nom attribué en faisant un clic droit sur le bouton qui vient d'être ajouté.

Créé le 15 avril 2007  par SilkyRoad

Il est possible de récupérer l'information en utilisant la propriété ActionControl:
Placez ces trois procédures dans un module standard. La première macro crée une barre d'outils personnalisée. La deuxième macro est appelée lorsque vous cliquez sur un des boutons dans la barre d'outils. La troisième permet de supprimer la barre d'outils.

Vba
Sélectionnez

Sub CreationBarre()
    Dim cbBarre As CommandBar
    Dim CB_B1 As CommandBarButton, CB_B2 As CommandBarButton
    Dim CB_B3 As CommandBarButton
 
    Set cbBarre = CommandBars _
        .Add(Name:="Ma barre perso", Position:=msoBarTop, Temporary:=True)
 
    Set CB_B1 = cbBarre.Controls.Add(Type:=msoControlButton)
    With CB_B1
        .FaceId = 353
        .Tag = "Premier bouton"
        .OnAction = "TestMacro"
    End With
 
    Set CB_B2 = cbBarre.Controls.Add(Type:=msoControlButton)
    With CB_B2
        .FaceId = 351
        .Tag = "Deuxième bouton"
        .OnAction = "TestMacro"
    End With
 
    Set CB_B3 = cbBarre.Controls.Add(Type:=msoControlButton)
    With CB_B3
        .FaceId = 352
        .Tag = "Troisième bouton"
        .OnAction = "TestMacro"
    End With
 
    cbBarre.Visible = True
End Sub
 
 
Sub TestMacro()
    MsgBox CommandBars.ActionControl.Tag
End Sub
 
 
Sub SuppressionBarre()
    On Error Resume Next
    CommandBars("Ma barre perso").Delete
End Sub
Créé le 14 mai 2007  par SilkyRoad

Pour ajouter une commande au menu contextuel (apparaissant sur click droit) d'une cellule, il suffit d'ajouter une entrée à la CommandeBar "Cell" (menu contextuel cellule feuille de calcul).

Vba
Sélectionnez

' Rajout d'une entrée dans menu contextuel
'
Function MenuCell(stCde As String, stMess As String)
    Dim Mc As CommandBarControls
    Dim Bo As CommandBarButton
 
    Set Mc = CommandBars("Cell").Controls
    Set Bo = Mc.Add(msoControlButton, Temporary:=True)
    Bo.Caption = stMess
    Bo.OnAction = stCde
End Function


Exemple d'utilisation : Ajout d'une entrée Ajouter Prefixe, permettant, sur click droit sur une cellule, de remplacer la valeur de chaque cellule sélectionnée par la valeur courante précédée d'une chaine de caractére saisie dans une inputBox.

Vba
Sélectionnez
 
'Initialisation dans l'évènement Workbook_open
'
Private Sub Workbook_Open()
    MenuCell "AjoutePrefixe", "Ajouter Prefixe"
End Sub
Vba
Sélectionnez

' Fonction exemple..
'
Sub AjoutePrefixe()
    Dim Pre As String
    Dim s As Range, c As Object
 
   Pre = InputBox("prefixe")
       Set s = Selection
       For Each c In s
          c.Value = Pre & c.Value
       Next
End Sub
Créé le 14 février 2004  par Bbil

Le menu contextuel des cellules apparait lorsque vous faites un clic droit dans la feuille de calcul.
Celui ci peut être paramétré afin d'ajouter ou supprimer des transactions personnalisées.

La macro suivante permet de la réinitialiser le menu contextuel:

Vba
Sélectionnez

Application.CommandBars("cell").Reset
Créé le 10 juin 2007  par SilkyRoad

Vous pouvez atteindre les menus et boutons personnalisés en ouvrant l'onglet Complément dans le ruban.

Créé le 20 août 2007  par SilkyRoad

Cette péripétie arrive parfois lorsque vous recevez des classeurs contenant des macros qui manipulent les barres d'outils et les barres de menus. Si la procédure n'est pas totalement maîtrisée, les menus ne sont pas correctement réinitialisés lors de la fermeture du classeur.


Utilisez ces macros, si vous pouvez encore accéder à l'éditeur de macros (Alt+F11):

Vba
Sélectionnez

Application.CommandBars("Worksheet Menu Bar").Enabled = True


et

Vba
Sélectionnez

Dim Cb As CommandBar
 
For Each Cb In Application.CommandBars
    If Cb.BuiltIn = True Then
        Cb.Enabled = True
    End If
Next




Dernier recours, recherchez les fichiers portant l'extension .xlb sur votre PC.
Ces fichiers servent à stocker les paramètres de la barre d'outils et sont généralement enregistrés à cet emplacement:
C:\Documents and Settings\Nom Utilisateur\ApplicationData\Microsoft\Excel\Excel10.xlb
Dans cet exemple, Excel10.xlb correspond à la version 2002 d'Excel.
Assurez vous qu'Excel est bien fermé.
Supprimez ces fichiers .xlb (c'est sans risque) ou sinon renommez les (par exemple: Excel10.xlb.old).
Redémarrez Excel.
L'application affichera les barres d'outils par défaut.


Nota:
Règle générale: Quand vous recevez un classeur dont vous ne connaissez l'origine, ayez le réflexe de désactiver les macros lors de la première ouverture. Ensuite vérifiez que les procédures contenues dans le fichier ne risquent de provoquer des actions indésirables sur votre PC. S'il n'y a pas de problème, refermez le classeur puis ré-ouvrez le en activant les macros.

Créé le 20 août 2007  par SilkyRoad

Si votre barre de formule a disparu:
Utilisez le menu Outils
Options
Onglet Affichage
Cochez l'option "Barre des formules"
Cliquez sur le bouton OK pour valider.

Sous Excel2007:
Cliquez sur le bouton Office
Cliquez sur le bouton "Options Excel"
Sélectionnez le menu "Options avancées"
Dans le groupe "Afficher", cochez l'option "Afficher la barre de formule"
Cliquez sur le bouton OK pour valider.

Créé le 5 décembre 2007  par SilkyRoad

Les FaceID sont les petites icônes intégrées à MS Office, permettant de personnaliser les boutons des barres de menus.

Vba
Sélectionnez

Sub Liste_FaceIDs()
    Dim tBar As CommandBar
    Dim i As Long
 
    'Supprime la barre d'outils temporaire si elle existe.
    On Error Resume Next
    Application.CommandBars("BarreTemp").Delete
    On Error GoTo 0
 
    'Supprime le contenu de la feuille
    Worksheets("Feuil1").Pictures.Delete
    Worksheets("Feuil1").Cells.ClearContents
    Application.ScreenUpdating = False
 
    'Création barre d'outils
    Set tBar = Application.CommandBars.Add(Name:="BarreTemp")
 
    For i = 1 To 1870
        On Error Resume Next
        'Supprime le bouton précédent
        tBar.Controls(1).Delete
        On Error GoTo 0
 
        'Crée un nouveau bouton dans la barre d'outils
        With tBar.Controls.Add(Type:=msoControlButton)
            'Ajoute un FaceID
            .FaceId = i
            'Copie le FaceID
            .CopyFace
        End With
 
        'Effectue le collage dans la feuille
        Worksheets("Feuil1").Paste
 
        'Repositionne et nomme la nouvelle forme collée
        With Worksheets("Feuil1").Shapes(i)
            .Top = Cells(i, 1).Top
            .Left = 15
            .Name = "ID_" & i
        End With
 
    Next i
 
    'Supprime la barre d'outils temporaire
    Application.CommandBars("BarreTemp").Delete
    Application.ScreenUpdating = True
 
    MsgBox "Terminé."
End Sub




Vous pouvez également visualiser l'ensemble des icônes dans le tutoriel de Fred Thomas :

Consultez la liste des FaceID



Mis à jour le 20 septembre 2008  par SilkyRoad, Fring

Vous pouvez utiliser les FaceId comme image dans vos UserForm. L'avantage réside dans le stockage de ces icônes dans l'application et ne nécessite donc pas de gestion particulière des images lorsque vous transférez le classeur sur d'autres postes utilisateurs.
L'inconvénient : une dimension trop importante du conteneur (un contrôle Image par exemple) nuit à la qualité d'affichage.

La procédure suivante affiche un FaceID dans un contrôle Image, nommé Image1.

Vba
Sélectionnez

Private Sub UserForm_Initialize()
    Dim Cmb As CommandBarControl
    Dim cBar As CommandBar
 
    Set cBar = CommandBars.Add(Position:=msoBarFloating, MenuBar:=False, Temporary:=True)
    Set Cmb = cBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
 
    '964 = point d'exclamation
    Cmb.FaceId = 964
 
    Image1.PictureSizeMode = fmPictureSizeModeStretch
    Image1.Picture = Cmb.Picture
 
    cBar.Delete
End Sub



Consultez la liste des FaceId.

Créé le 19 février 2009  par SilkyRoad

Faites un clic droit sur le menu en question et sélectionnez l'option "Supprimer la commande personnalisée".

Créé le 26 mai 2008  par SilkyRoad

Utilisez le menu Outils,
Macros complémentaire
Décochez l'option "Outils pour l'Euro"
Cliquez sur le bouton OK pour valider

Créé le 20 septembre 2008  par JackOuYA

Le menu contextuel correspond à la liste de fonctions qui s'affiche lorsque vous effectuez un clic droit dans une cellule.
Vous pouvez désactiver un ou plusieurs éléments en spécifiant son ID

La liste des Ids du menu contextuel

Couper : 21
Copier : 19
Coller : 22
Collage spécial : 755
Insérer : 3181
Supprimer : 292
Effacer le contenu : 3125
Insérer un commentaire : 2031
Effacer le commentaire : 1592
Afficher le commentaire : 1593
Format de cellule : 855
Liste de choix : 1966
Ajouter un espion : 5685
Lien hypertexte : 1576
Modifier le lien hypertexte : 1577
Ouvrir le lien hypertexte : 1015
Supprimer le lien hypertexte : 3626


Un exemple pour griser le bouton Format de cellule du menu contextuel :

Vba
Sélectionnez

Sub Desactiver() 
    With Application.CommandBars("Cell") 
        Set Ctrl = .FindControl(ID:=855) 
        Ctrl.Enabled = False 
        Set Ctrl = Nothing 
    End With 
End Sub 



Et pour le réactiver :

Vba
Sélectionnez

Sub reactiver() 
    With CommandBars("Cell") 
        Set Ctrl = .FindControl(ID:=855) 
        Ctrl.Enabled = True 
        Set Ctrl = Nothing 
    End With 
End Sub
Créé le 20 septembre 2008  par Fred65200, SilkyRoad
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.