IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E00] barre de menu par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut [E00] barre de menu par macro
    Bonjour,

    Ce que je souhaite faire c'est créer un bouton dans une barre de menu. Ce bouton devra commander une macro qui lance le menu de mon application.

    Si je le fait à la main, cela fonctionne très bien mais le bouton disparait dès que je change de PC, car il est lié à excel et pas au fichier.

    Donc je souhaiterai le créer par macro à l'ouverture du fichier et le supprimer ensuite.

    Pour l'instant, j'ai réussi à avoir la barre de menu et à y insérer la bouton (merci l'enregistreur de macro ), mais je n'arrive pas à modifier le bouton (image, texte) et à affecter la macro.

    voilà ce que j'ai pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.CommandBars.Add(Name:="menutest", Position:=msoBarTop, temporary:=True).Visible = True
        Application.CommandBars("menutest").Controls.Add Type:=msoControlButton, id:=2950, Before:=1
    Comment modifier l'image du bouton (un smiley ce ne fait pas serieux ), y ajouter du texte à coté, et surtout le lier à ma macro ?

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Pour créer la barre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myBar = Application.CommandBars.Add(sProjBarName, msoBarTop, False, True)
    Bien mettre la propriété Temporary à True pour ne pas garder la barre en permanance dans les autres classeurs.

    Puis les contrôles, par exemple pour un bouton de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub subCreateCmdBarButton(ByVal myBar As office.CommandBar, _
                            ByVal sControlName As String, _
                            ByVal sProcName As String, _
                            ByVal TTText As String)
     
    Dim ctl As office.CommandBarButton
     
    Set ctl = myBar.Controls.Add(office.msoControlButton)
     
    With ctl
        .Style = office.msoButtonCaption
        .Caption = sControlName
        .TooltipText = TTText
        .BeginGroup = True
        .Visible = True
        If sProcName = "subRien" Then
            .Enabled = False
        Else
            .OnAction = Application.ThisWorkbook.FullName & "!" & sProcName
        End If
    End With
     
    Set ctl = Nothing
    End Sub
    Comme tu le vois pour lier une procédure, c'est .OnAction.
    Préciser dans le nom de macro le nom du classeur est utile au cas où plusieurs classeurs peuvent être ouverts en même temps.

    Après, une barre de menu, ce n'est pas une planche à dessin. Mais avec beaucoup d'effort, sûrement, ...

    Bon courage,

    PGZ

  3. #3
    Membre confirmé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut
    Bonjour pgz,

    En fouinant dans l'aide autour des propriétés et méthodes que tu m'as donné j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set newbar = Application.CommandBars.Add(Name:="menu", Position:=msoBarTop, temporary:=True)
    newbar.Visible = True
    Set mybtn = newbar.Controls.Add(Type:=msoControlButton, id:=2950, Before:=1)
    mybtn.FaceId = 65
    mybtn.Caption = "Menu Gestion"
    mybtn.Style = msoButtonIconAndCaption
    mybtn.OnAction = "lancement_menu_gestion"
    Et pour trouver le FaceId :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub newbouton()
        Set newbar = Application.CommandBars.Add(Name:="menu", Position:=msoBarTop, temporary:=True)
        newbar.Visible = True
        Set mybtn = newbar.Controls.Add(Type:=msoControlButton, id:=2950, Before:=1)
        For i = 1 To 1000
            mybtn.FaceId = i
            MsgBox i
        Next
    End Sub
    Merci pour m'avoir montré le chemin de la Vérité

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Mise en forme barre d'erreur par macro
    Par citizenbaban dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/04/2013, 09h37
  2. [XL-2010] Macro dans la barre de Menu
    Par gcolson dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/07/2012, 16h22
  3. [XL-2010] Insérer un texte dans la barre de statut par macro
    Par statista dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/05/2011, 10h23
  4. [AC-2007] Suppression d'un menu contextuel créé par macro
    Par spaiku dans le forum IHM
    Réponses: 2
    Dernier message: 10/11/2010, 10h29
  5. Barre d'outil personnalisée par macro
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/06/2009, 05h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo