Affichage et activation ou non de barres personnelles [Résolu/Fermé]

Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
- - Dernière réponse : mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
- 4 mai 2016 à 21:15
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
Afficher la suite 

3 réponses

Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
420
0
Merci
Bonjour,

Voir ceci, a adapter:

https://support.microsoft.com/fr-fr/kb/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

mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 -
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
Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
420
0
Merci
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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 -
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
Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
420
0
Merci
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

http://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
cs_Le Pivert
Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
420 -
Regarde ce que je t'ai dit sur ce post et mets le en pratique:

http://www.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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 > cs_Le Pivert
Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
-
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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 -
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
cs_Le Pivert
Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
420 > mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
-
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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 > cs_Le Pivert
Messages postés
6422
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 décembre 2019
-
Re,

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

Cordialement