Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Risleure
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Risleure

XLDnaute Occasionnel
Bonjour le Forum

Grace au Forum, j'ai réussi à mettre sur pied (ci joint) un fichier qui crée à l'ouverture et qui supprime à la fermeture un menu perso "ModOp".

Par contre je souhaiterai que le sous menu Mise à jour soit actif quand Feuil1 est active et soit désactivé quand on est sur une autre feuille voire un autre fichier ouvert.

Je n'arrive pas à gérer les événements Private Sub Worksheet_Activate() et Private Sub Worksheet_Deactivate() 😕

Merci de vos lumières
 

Pièces jointes

Re : Menu indigeste

Re,

Désolé Renauder ce n'est pas exactement le but recherché. Le menu"Mode opératoire" doit rester visible c'est le sous menu "Mise à jour" qui doit être actif (.enabled=true) ou inactif (.enabled=False) en fonction de la feuille active.

Merci
 
Re : Menu indigeste

bonsoir

ci-joint quelques exemples de menu qui se créent et s'effacent
en changeant de feuille !
feuille avec menu et feuille sans menu

avec clic droit (contextuel)
en haut de la barre excel
sur le côté de la feuille excel

au choix !?

EDIT il faut les d'abord les enregistrer sur ton disque pour les utiliser !
 

Pièces jointes

Dernière édition:
Re : Menu indigeste

bonjour

je n'ai pas trouvé exactement mais j'ai triché un peu 😀 (comme d'hab)

dans thisworkbook, à l'ouverture il faut tester la feuille active
voici le code à placer dans thisworkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call Sup_Cbar
End Sub

Private Sub Workbook_Open()

    Call Barre2MenusPerso
    If ActiveSheet.Name = "Feuil1" Then
        maj.Enabled = True
    Else
        maj.Enabled = False
    End If
    
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Feuil1" Then
        maj.Enabled = True
    Else
        maj.Enabled = False
    End If
End Sub
ensuite (he oui c'est pas fini)
dans ton module Module 1 (en rouge) 2 lignes
Code:
Option Explicit
[COLOR="red"]Public maj As CommandBarButton[/COLOR]
Sub Barre2MenusPerso()

Dim CbarModOp As CommandBar
Dim Cbut As CommandBarButton
Dim CpopModOp As CommandBarPopup

'création de la barre de menus
    Set CbarModOp = CommandBars.Add(Name:="Mode Opératoire", Position:=msoBarTop, Temporary:=True)
        CbarModOp.Protection = msoBarNoCustomize  '<-- protection de la barre de menus

'insertion sur la barre de menus d'un sous-menu
    Set CpopModOp = CbarModOp.Controls.Add(msoControlPopup)
        With CpopModOp
            .Caption = "Mode opératoire" '<-- label du sous-menu
            '.Tag = "Titi" '<-- étiquette qui sert à quoi ??
        End With
'insertion dans le sous-menu 1 d'un premier bouton de commande
    Set Cbut = CpopModOp.Controls.Add(msoControlButton)
        With Cbut
            .Style = msoButtonCaption '<-- bouton avec texte uniquement
            .Caption = "Bouton 1" '<-- label du bouton
            '.OnAction = "Macro4" '<-- procédure à exécuter
            .Tag = "sm1cbut1" '<-- étiquette
        End With
'insertion dans le sous-menu 1 d'un second bouton de commande
    Set Cbut = CpopModOp.Controls.Add(msoControlButton)
        With Cbut
            .Style = msoButtonCaption '<-- bouton avec texte uniquement
            .Caption = "&Mise à jour" '<-- label du bouton
            '.OnAction = "MajModOp" '<-- procédure à exécuter
            .Enabled = False
        End With
    [COLOR="Red"]Set maj = Cbut[/COLOR]
    CbarModOp.Visible = True '<-- affichage de la barre de menus
End Sub
 
Re : Menu indigeste

Bonsoir Le Forum, Wilfiried, Roland, Eric

Merci pour vos contributions, je vais étudier vos solutions. Celles de Roland me conviennent presque !!! Bien qu'il semble passer par une création et une supression de la barre à chaque changement de feuilles alors que ce n'est pas exactement ma demande mais avec vos codes je pense m'en tirer.

Merci encore et bon weekend.
 
Re : Menu indigeste

bonsoir

il est possible de faire ce que tu souhaites avec ces mêmes codes !
dis mois ce que tu souhaites et je verrai pour t'arranger cela !
Ce sont des extraits de codes pour essais perso que j'ai gardé
Mais il sont facilement modifiables par exemple ne pas les supprimer au changement de feuille
C'était pour une utilisation bien particulière.

PS: je suis absent demain toute la journée.
 
Re : Menu indigeste

Bonsoir,
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Application.CommandBars("Menu contextuel personnalisé 10658")
    If Sh.Name = "Feuil1" Then
        .Controls(2).Enabled = True
    Else
        .Controls(2).Enabled = False
    End If
End With
End Sub
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
Réponses
4
Affichages
2 K
C
Réponses
39
Affichages
6 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…