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 :

Créer Un boutton dans la barre de menu sans liste déroulante


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut Créer Un boutton dans la barre de menu sans liste déroulante
    Bonjour,

    je souhaite créer dans la barre de menu Excel un nouveau menu contenant une liste déroulante de 2 bouttons, liés chacun à une macro, et un second menu, celui-ci sans liste déroulante, qui permet de lancer directement la macro dès le 1er clic.

    Pour un menu à liste déroulante je n'ai pas de problème :

    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
    25
    26
    Const nom = "&Retros"
     
    Function Create_Menu()
     
    For Z = 1 To CommandBars(1).Controls.count
        If CommandBars(1).Controls(Z).Caption = nom Then Exit Function
    Next Z
     
    With CommandBars(1).Controls.Add(msoControlPopup, Before:=CommandBars(1).Controls.count)
        .Caption = nom
     
        With .Controls.Add(msoControlButton)
            .Caption = "&Part I"
            .OnAction = "PART_I_Bestandsprovisionen"
            .FaceId = 577
        End With
     
        With .Controls.Add(msoControlButton)
            .Caption = "&Part III"
            .OnAction = "PART_III_Pft_Kreation"
            .FaceId = 328
        End With
     
    End With
     
    End Function
    J'ai essayé de remplacer le 'msoControlPopup' de With CommandBars(1).Controls.Add(msoControlPopup, Before:=CommandBars(1).Controls.count) par msoControlButton, msoControlButtonPopup, etc., mais rien ne fonctionne.

    Est-ce possible ?
    Merci d'avance pour vos idées.

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu peux essayer ceci :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Const nom = "Retros"
     
    Sub Create_Menu()
    Dim Cbar As CommandBar, Cpop As CommandBarPopup, Cbut As CommandBarButton
     
    Set Cbar = CommandBars(1)
     
    For Z = 1 To CommandBars(1).Controls.Count
        If CommandBars(1).Controls(Z).Tag = "MonBouton" Then Exit Sub
    Next Z
     
    Set Cpop = Cbar.Controls.Add(Type:=msoControlPopup, temporary:=True)
    Cpop.Caption = nom
     
    Set Cbut = Cpop.Controls.Add(Type:=msoControlButton, temporary:=True)
    With Cbut
        .Style = msoButtonIconAndCaption
        .Caption = "PartI"
        .OnAction = "PART_I_Bestandsprovisionen"
        .FaceId = 577
    End With
     
    Set Cbut = Cpop.Controls.Add(Type:=msoControlButton, temporary:=True)
    With Cbut
        .Style = msoButtonIconAndCaption
        .Caption = "PartIII"
        .OnAction = "PART_III_Pft_Kreation"
        .FaceId = 328
    End With
     
    Set Cbut = Cbar.Controls.Add(Type:=msoControlButton, temporary:=True)
    With Cbut
        .Style = msoButtonIconAndCaption
        .Caption = "Test"
        .OnAction = "MaMacro"
        .FaceId = 59
        .Tag = "MonBouton"
    End With
     
    Set Cbar = Nothing
    Set Cpop = Nothing
    Set Cbut = Nothing
     
    End Sub
    J'ai mis volontairement le paramètre Temporary à True pour le test de cette manière les boutons se supprimeront lors de la fermeture d'Excel.

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Merci 1000 fois, c'est exactement ce que je cherchais à faire. Je suis ravie !!!
    Bonne fin d'journée.
    Mél

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Pour info, vu que j'ai mis Temporary:=True, les boutons se supprimeront automatiquement à la fermeture d'Excel et devront être recréé la prochaine fois que tu ouvres ton classeur. Ce qui est tout à fait réalisable en mettant dans l'évènement Open de l'objet Thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Create_Menu
    End Sub
    Si par contre tu veux créer ces boutons et les maintenir en permanence sur la barre de menu, tu supprimes le paramètre Temporary qui par défaut sera False

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Merci, c'est gentil.

    J'ai en fait 2 codes, un de création et un de suppression, pour que les barres ne soient visibles que lorsqu'on active la fenetre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    Create_Menu
    End Sub
     
    Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Erase_Menu
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function Erase_Menu()
     
    Next_Z:
    For Z = 1 To CommandBars(1).Controls.Count
        If CommandBars(1).Controls(Z).Caption = nom Then
            CommandBars(1).Controls(nom).Delete
            GoTo Next_Z
        End If
    Next Z
     
    End Function
    Mais c'est vraiment gentil pour toutes ces infos.
    A une prochaine fois
    Mél

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Là tu vas effacer le sous-menu avec les deux boutons mais pas le bouton tout seul

    Tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function Erase_Menu()
    Dim i as byte
     
    For i = CommandBars(1).Controls.Count To 1 Step -1
        If CommandBars(1).Controls(i).BuiltIn = False Then CommandBars(1).Controls(i).Delete
    Next
     
    End Function
    Ce qui aura pour effet de supprimer tous les boutons ou autres contrôles ne faisant pas partie des contrôles de base de l'application

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

Discussions similaires

  1. [VBA-E] Supprimer un bouton dans la barre de menu
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/06/2007, 17h15
  2. [Sources]Créer un bouton dans une barre d'outils
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 2
    Dernier message: 19/03/2007, 12h32
  3. Clignotement d'une fenêtre dans la barre de menu
    Par RR instinct dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 12/12/2006, 10h26
  4. Réponses: 2
    Dernier message: 08/06/2006, 11h09
  5. Réponses: 2
    Dernier message: 12/05/2006, 14h20

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