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 :

[VBA-E] Supprimer un bouton dans la barre de menu


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut [VBA-E] Supprimer un bouton dans la barre de menu
    Bonjour,

    J'ai créé un bouton dans ma barre de menu et j'ai créé une procédure qui permet de le supprimer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Suppr_Bouton_Menu()
     
        On Error GoTo Pas_de_Bouton
     
            Application.CommandBars("Worksheet Menu Bar").Controls("&Bouton").Delete
     
    Pas_de_Bouton:
        On Error GoTo 0
     
    End Sub
    Cette procédure fonctionne.


    Par contre, lorsque je clic, sur ce bouton une autre procédure s'éxécute.... et à la fin de celle-ci je souhaiterai que le bouton soit supprimer en lancant la procédure Suppr_Bouton_Menu.... Mais cela ne fonctionne pas, car tant que la procédure s'éxécute le bouton est activé donc impossible de le supprimer.

    Help !

    Merci

    Damsmut

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde , tu dois connaître sa position, c'est tout
    A+

    Edit
    Tu mets son index à la place de "CommandBars("Standard").Controls.Count"

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Oais j'ai fait cela par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CommandBars("Worksheet Menu Bar").Controls.Item(11).Delete
    Mais cela ne marche pas non plus car le bouton est grisé pendant toute la procédure.



    En fait pour simplifier ma demande : je veux que ce bouton soit supprimé lorsque je clic dessus.

    (Ce que j'ai pu faire par contre c'est le mettre en visible = false)

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je comprends, ton code est directement lié à la macro. Tu peux utiliser une astuce qui permet de supprimer ton bouton en décalant cette suppression dans le temps
    D'abord tu crées ton bouton.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub CréerBouton()
    Dim nbboutons As Byte
        Set MonControl = Application.CommandBars("Standard")
        With MonControl
            nbboutons = .Controls.Count
            Set MonBouton = .Controls.Add(msoControlButton, 2950, nbboutons)
                With MonBouton
                    .Caption = "Recettes" ' Ce qu'affiche le bouton
                    .OnAction = "NomMacro" ' la macro associée au bouton
                End With
            Set MonBouton = Nothing
        End With
        Set MonControl = Nothing
    End Sub
    Et pour supprimer le bouton, tu fais faire ça par une autre macro pour dissocier les deux actions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub NomMacro()
    Application.OnTime Now + TimeValue("00:00:02"), "SupprimerBouton"
    'Ici le code de ta macro associée au bouton
    End Sub
     
    Sub SupprimerBouton()
        Application.CommandBars("Standard").Controls(Application.CommandBars("Standard").Controls.Count).Delete
    End Sub
    Testé, ça fonctionne chez moi.
    Tu dis

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    Encore une question concernant ce sujet.... y'a t-il un moyen lorsque la macro s'exécute, de récupérer le nom du bouton qui est activé dans une variable ?

    merci

    A+

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le caption du bouton ? Je ne sais pas mais le nom de la macro, oui. Quoique... Elle se trouve où, ta macro ?
    Sinon, en tête de macro, tu places une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeNomDeMonBouton = "Son caption"
    Tu pourrais faire ça ?
    A+

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    Ca ne peut pas aller.

    J'explique un peu plus en détails :

    En fait, une macro crée à l'ouvreture du fichier une liste de menus à partir d'une liste changeante.... donc je ne connais pas au départ le nom des différents boutons....

    par contre ensuite sur clic de n'importe quel de ces boutons (qui me servent à faire un filtre) je lance la même macro... c'est dans cette macro que je souhaite récupérer le nom du bouton actif


    Quand on clic sur le bouton et qu'ion exécute la macro pas à pas... on remarque que le bouton en question est activé (voir screenshot)... il y'a peut être un moyen de récupérer ce nom alors ?



    merci

    a+

    damsmut

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Hello,
    Alors pas d'idée ouskel'n'or ?
    Aurais-je fini par réussi à te coller ?
    ... ah non j'en doute ... comme d'hab tu vas me trouver un super truc

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut



    J'ai trouvé... et tout seul comme un grand


    Voici le code pour récupérer le nom du menu qui est en train d'être exécuté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CommandBars.ActionControl.Caption

    et c'est tout !!

    mais ouf cela va me permettre de continuer tranquilement mon programme.

    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/05/2014, 22h03
  2. [XL-2003] Désactiver bouton dans une barre de menu personnalisée
    Par Rough43 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2012, 10h58
  3. [XL-2007] Créer un bouton dans la barre d'accès rapide via VBA
    Par Danieldu54 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/03/2011, 00h05
  4. Réponses: 5
    Dernier message: 15/01/2010, 19h32
  5. [AC-2003] Boutons dans la barre du menu démarrer
    Par OtObOx dans le forum IHM
    Réponses: 2
    Dernier message: 11/01/2010, 12h14

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