Affichage et activation ou non de barres personnelles

Résolu
mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   -  
mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J’ai deux commandes qui réalisent la création de barres de commandes à l’ouverture du programme donc dans le module "ThisWorkbook" :

Une barre spécifique à DEVIS et un à FACTURES

Ce que je cherche à faire :

Avoir les fonctions active de la barre concernée si je suis sur l’onglet DEVIS ou FACTURES, donc des fonctions en grisées inactives par exemple.

Voici le code que j'utilise aujourd'hui pour créer mes barres :

Sub DEVIS()
Set myMenuBar = CommandBars.ActiveMenuBar
Set Menu_fct_spe = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True, before:=10)
Menu_fct_spe.Caption = "2-Fonctions devis"

Set ctrl_Imp_Exp = Menu_fct_spe.Controls.Add(Type:=msoControlButton, ID:=1)
With ctrl_Imp_Exp
.Caption = "Quitter"
.FaceId = 265
.Style = msoButtonIconAndCaption
.OnAction = "debut"
End With
'
Set ctrl_Imp_Exp = Menu_fct_spe.Controls.Add(Type:=msoControlButton, ID:=1)
With ctrl_Imp_Exp
.Caption = "Enregistrer"
.FaceId = 3
.Style = msoButtonIconAndCaption
.OnAction = "Enregistrer_D"
End With

Set myMnuBar = Nothing
Set Menu_fct_spe = Nothing
Set ctrl_import = Nothing
Set ctrl_Export = Nothing
Set ctrl_Cbb = Nothing

End Sub


Et

Sub FACTURES()
Set myMenuBar = CommandBars.ActiveMenuBar
Set Menu_fct_spe = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True, before:=10)
Menu_fct_spe.Caption = "4-Fonctions factures"

Set ctrl_Imp_Exp = Menu_fct_spe.Controls.Add(Type:=msoControlButton, ID:=1)
With ctrl_Imp_Exp
.Caption = "Quitter"
.FaceId = 265
.Style = msoButtonIconAndCaption
.OnAction = "debut"
End With
'
Set ctrl_Imp_Exp = Menu_fct_spe.Controls.Add(Type:=msoControlButton, ID:=1)
With ctrl_Imp_Exp
.Caption = "Enregistrer"
.FaceId = 283
.Style = msoButtonIconAndCaption
.OnAction = "Enregistrer_F"
End With


Comment faut-il pratiquer pour mettre en place cette fonctionnalité ?

Merci d’avance pour votre aide.

Cordialement

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Voir ceci, a adapter:

    https://support.microsoft.com/fr-fr/help/830502#bookmark-12

    Option Explicit
    'https://support.microsoft.com/fr-fr/kb/830502#bookmark-11
    Private Sub CommandButton1_Click()
    Menu_Create
    End Sub
    Private Sub CommandButton2_Click()
    Menu_Disable
    End Sub
    Sub Menu_Disable()
    CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = False
    End Sub
    Sub Menu_Create()
    Dim myMnu As Object
       Set myMnu = CommandBars("Worksheet menu bar").Controls. _
          Add(Type:=msoControlPopup, before:=3)
       With myMnu
       ' The "&" denotes a shortcut key assignment (Alt+M in this case).
          .Caption = "New &Menu"
       End With
    End Sub
    

    0
    1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Bonjour,

      Merci pour les informations.

      J’ai pris le temps de lire et relire toutes ces informations, et malheureusement même avec cela et des essais toute azimute je n’ai pas réussi à faire fonctionner un code qui réponde à mon besoin en conservant mon code de création des menus suivant post0.

      Par exemple, j’ai ajouté le code ci-dessous à la sortie de mon onglet devis :

      CommandBars("2-Fonctions devis").Controls("Quitter").Enabled = False


      J’obtiens une erreur « Agument ou appel de procédure incorrect »

      Si tu as des conseilles à me donner pour trouver la solution, merci d’avance.

      Cordialement
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voilà un exemple d'après tes anciens post:

    http://www.cjoint.com/c/FEduwlTkNXQ

    Regarde les codes mis dans les modules des feuilles Devis et Factures
    0
    1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Bonjour,


      Merci pour cette réponse, mais ça ne répond pas à ma demande du post0.

      les codes que j'utilise aujourd'hui (post0) créés des menus au même niveau que ceux existant comme Fichier, Edition, Affichage ect ... sous la même forme.

      Ma question porte sur ce type de menu.

      Comment les afficher ou pas en fonction de l'onglet sur lequel je travail.
      ou mieux que les fonctions soient grisées et non accessibles suivant l'utilité.

      cordialement
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Ton code provient de ce lien. Dans ce lien, il est indiqué comment supprimer le menu.
    donc il te suffit de faire une petite adaption

    https://codes-sources.commentcamarche.net/faq/913-creation-de-menus-sous-excel-word-et-powerpoint

    Voici un exemple, je te laisse faire le reste:
    à mettre dans la feuille Facture:

    Option Explicit
    Private Sub Worksheet_Activate()
     CommandBars.ActiveMenuBar.Controls("2-Fonctions devis").Controls("Quitter").Enabled = False
    End Sub
    
    


    si tu suis l'exemple que je t'ai posté, cela devrait être un jeu d'enfant

    Bonne continuation
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Regarde ce que je t'ai dit sur ce post et mets le en pratique:

      https://forums.commentcamarche.net/forum/affich-33451590-sauvegarde-fichier-par-vba#p33458732


      Apprends toi à mettre Option Explicit tout en haut de tes modules. Cela corrige les erreurs de déclaration de variable

      Bon courage
      0
      1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Bonjour,

        Merci pour toutes tes réponses qui m'on permis d'avancer.
        Ma fonctionnalité marche comme je le souhaité, c'est formidable.
        Effectivement pour ta recommandations du Post6, je devais le faire et ... c'est passé à la trappe.

        Bon personne n'est parfait.

        encore merci

        Cordialement
        0
    2. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Bonjour,

      Après plusieurs lectures sur la fonction Option Explicit j'ai enfin compris l'intérêt de l'utiliser qui oblige à déclarer toutes les variables dans le code du module.

      Et pour ne pas oublier de placer l'Option Explicit en début de chaque module, j'ai tout simplement forcer Excel à le faire pour moi :

      1. Démarrez Visual Basic Editor (VBE).
      2. Cliquez sur le menu Outils / Options.
      3. Sous l’onglet Éditeur, cochez l’option Déclaration des variables obligatoire

      Nota :
      le réglage s’applique à tous les futurs modules. Pour ceux qui existent déjà, il faut l’ajouter manuellement, et recompiler pour vérifier qu’il ne traîne pas de variable non déclarée !

      Voici-ci ce que j'ai compris de cette fonction

      J'allais oublier ma question :

      Faut-il mettre aussi Option Explicit sur les macros dans les feuilles, les UF, ThisWorkbook ???

      Merci des conseilles.

      Cordialement
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention  
         
        Faut-il mettre aussi Option Explicit sur les macros dans les feuilles, les UF, ThisWorkbook ???

        Bien sur. Si tu as procédé de la manière indiquée, Option Explicit se met partout automatiquement.

        Bonne soirèe

        @+ Le Pivert
        0
      2. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Re,

        merci pour tous les conseilles et peut-être à une prochaine sur un autre sujet.

        Cordialement
        0