Affichage et activation ou non de barres personnelles

Résolu/Fermé
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 2 mai 2016 à 23:47
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 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
A voir également:

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 mai 2016 à 11:20
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
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
3 mai 2016 à 21:38
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 mai 2016 à 22:24
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
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
3 mai 2016 à 22:34
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
4 mai 2016 à 09:07
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
4 mai 2016 à 09:17
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
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
4 mai 2016 à 14:45
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
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
Modifié par mijean94 le 4/05/2016 à 19:19
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021
4 mai 2016 à 19:48
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
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
4 mai 2016 à 21:15
Re,

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

Cordialement
0