Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

menu personnalisé - griser éléments

8 réponses
Avatar
René
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé quand ils
ne sont pas concerné, p.ex. une macro protège certaines cellules et
feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René

8 réponses

Avatar
JPMonnier
Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui mettre
la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé quand
ils ne sont pas concerné, p.ex. une macro protège certaines cellules et
feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René



Avatar
René
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège les
feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de la
macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de news:

Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé quand
ils ne sont pas concerné, p.ex. une macro protège certaines cellules et
feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René






Avatar
JPMonnier
Je constate que Protéger Feuille est sans s
alors que .Controls("Proteger Feuilles") a un s
Peut être que c'est la source d'erreur
--
également suivant les cas, si le nom de ton menu perso est Budget, il faut
utiliser la syntaxe suivante
Set Mybar = CommandBars("Budget")
Set Mycontrol = Mybar.Controls("Proteger Feuilles")
With Mycontrol
.Enabled = false ' ou True
End With

Cordialement

"René" a écrit dans le message de
news:
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège
les feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de la
macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de news:

Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé quand
ils ne sont pas concerné, p.ex. une macro protège certaines cellules et
feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René










Avatar
René
Rebonjour,

J'ai bien essayé le code proposé, pour le tester j'ai changé le nom du menu
en "Bu" et l'élément concerné en "Prot". La macro se plante toujpurs au
niveau de
Set Mybar = CommandBars("Bu")
avec le message :
Erreur d'exécution '5' - Argument ou appel de procédure incorrect.
Que faire ?
En plus avec tous les essais que j'ai fait, le menu "Fichier" a disparu de
la barre de menus Excel.

Cordialement
René


"JPMonnier" a écrit dans le message de news:

Je constate que Protéger Feuille est sans s
alors que .Controls("Proteger Feuilles") a un s
Peut être que c'est la source d'erreur
--
également suivant les cas, si le nom de ton menu perso est Budget, il faut
utiliser la syntaxe suivante
Set Mybar = CommandBars("Budget")
Set Mycontrol = Mybar.Controls("Proteger Feuilles")
With Mycontrol
.Enabled = false ' ou True
End With

Cordialement

"René" a écrit dans le message de
news:
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège
les feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de la
macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de news:

Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé
quand ils ne sont pas concerné, p.ex. une macro protège certaines
cellules et feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René













Avatar
JPMonnier
Bonsoir
La disparition du menu Excel est normal, il faut rétablir avant de quitter
Sinon, si tu peux m'envoyer ton fichier ce serait plus facile !
--
Cordialement

"René" a écrit dans le message de
news:
Rebonjour,

J'ai bien essayé le code proposé, pour le tester j'ai changé le nom du
menu en "Bu" et l'élément concerné en "Prot". La macro se plante toujpurs
au niveau de
Set Mybar = CommandBars("Bu")
avec le message :
Erreur d'exécution '5' - Argument ou appel de procédure incorrect.
Que faire ?
En plus avec tous les essais que j'ai fait, le menu "Fichier" a disparu de
la barre de menus Excel.

Cordialement
René


"JPMonnier" a écrit dans le message de news:

Je constate que Protéger Feuille est sans s
alors que .Controls("Proteger Feuilles") a un s
Peut être que c'est la source d'erreur
--
également suivant les cas, si le nom de ton menu perso est Budget, il
faut utiliser la syntaxe suivante
Set Mybar = CommandBars("Budget")
Set Mycontrol = Mybar.Controls("Proteger Feuilles")
With Mycontrol
.Enabled = false ' ou True
End With

Cordialement

"René" a écrit dans le message de
news:
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège
les feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de
la macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de news:

Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé
quand ils ne sont pas concerné, p.ex. une macro protège certaines
cellules et feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René

















Avatar
JPMonnier
Pour réafficher le menu Excel :
Sub SupprimerMenuPerso()
MenuBars(xlWorksheet).Reset
MenuBars(xlModule).Activate
MenuBars("perso").Delete 'perso =nom du menu perso
End Sub
Attention, une fois le menu perso supprimé, on ne peut le réafficher
qu'après avoir quitter Excel

"René" a écrit dans le message de
news:
Rebonjour,

J'ai bien essayé le code proposé, pour le tester j'ai changé le nom du
menu en "Bu" et l'élément concerné en "Prot". La macro se plante toujpurs
au niveau de
Set Mybar = CommandBars("Bu")
avec le message :
Erreur d'exécution '5' - Argument ou appel de procédure incorrect.
Que faire ?
En plus avec tous les essais que j'ai fait, le menu "Fichier" a disparu de
la barre de menus Excel.

Cordialement
René


"JPMonnier" a écrit dans le message de news:

Je constate que Protéger Feuille est sans s
alors que .Controls("Proteger Feuilles") a un s
Peut être que c'est la source d'erreur
--
également suivant les cas, si le nom de ton menu perso est Budget, il
faut utiliser la syntaxe suivante
Set Mybar = CommandBars("Budget")
Set Mycontrol = Mybar.Controls("Proteger Feuilles")
With Mycontrol
.Enabled = false ' ou True
End With

Cordialement

"René" a écrit dans le message de
news:
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège
les feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de
la macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de news:

Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé
quand ils ne sont pas concerné, p.ex. une macro protège certaines
cellules et feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René

















Avatar
JPMonnier
Bonjour,
J'ai fait un petit ex. sur lequel tu pourrais t'inspirer
http://cjoint.com/?dCjA25IhQp

--
Cordialement


"René" a écrit dans le message de
news:
Rebonjour,

J'ai bien essayé le code proposé, pour le tester j'ai changé le nom du
menu en "Bu" et l'élément concerné en "Prot". La macro se plante toujpurs
au niveau de
Set Mybar = CommandBars("Bu")
avec le message :
Erreur d'exécution '5' - Argument ou appel de procédure incorrect.
Que faire ?
En plus avec tous les essais que j'ai fait, le menu "Fichier" a disparu de
la barre de menus Excel.

Cordialement
René


"JPMonnier" a écrit dans le message de news:

Je constate que Protéger Feuille est sans s
alors que .Controls("Proteger Feuilles") a un s
Peut être que c'est la source d'erreur
--
également suivant les cas, si le nom de ton menu perso est Budget, il
faut utiliser la syntaxe suivante
Set Mybar = CommandBars("Budget")
Set Mycontrol = Mybar.Controls("Proteger Feuilles")
With Mycontrol
.Enabled = false ' ou True
End With

Cordialement

"René" a écrit dans le message de
news:
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège
les feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de
la macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de news:

Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé
quand ils ne sont pas concerné, p.ex. une macro protège certaines
cellules et feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René

















Avatar
René
Bonjour JPMonnier,

Merci pour ton aide, mais j'ai déjà réparé le menu grâce au tuyau de
MichDenis avec la macro:
sub test()
Application.commandBars(1).Reset
End sub
Cordialement,
René

"JPMonnier" a écrit dans le message de news:
uVD4w$
Pour réafficher le menu Excel :
Sub SupprimerMenuPerso()
MenuBars(xlWorksheet).Reset
MenuBars(xlModule).Activate
MenuBars("perso").Delete 'perso =nom du menu perso
End Sub
Attention, une fois le menu perso supprimé, on ne peut le réafficher
qu'après avoir quitter Excel

"René" a écrit dans le message de
news:
Rebonjour,

J'ai bien essayé le code proposé, pour le tester j'ai changé le nom du
menu en "Bu" et l'élément concerné en "Prot". La macro se plante toujpurs
au niveau de
Set Mybar = CommandBars("Bu")
avec le message :
Erreur d'exécution '5' - Argument ou appel de procédure incorrect.
Que faire ?
En plus avec tous les essais que j'ai fait, le menu "Fichier" a disparu
de la barre de menus Excel.

Cordialement
René


"JPMonnier" a écrit dans le message de news:

Je constate que Protéger Feuille est sans s
alors que .Controls("Proteger Feuilles") a un s
Peut être que c'est la source d'erreur
--
également suivant les cas, si le nom de ton menu perso est Budget, il
faut utiliser la syntaxe suivante
Set Mybar = CommandBars("Budget")
Set Mycontrol = Mybar.Controls("Proteger Feuilles")
With Mycontrol
.Enabled = false ' ou True
End With

Cordialement

"René" a écrit dans le message de
news:
Bonjour JPMonnier,

Merci de votre aide, mais ça ne marche pas, je n'ai pas dû comprendre.

Mon menu s'appelle "Budget" et un des éléments du menu est "Protéger
Feuilles". Quand j'ouvre le classeur le menu se met en place et protège
les feuilles. Je voudrais que cet élément, donc "Protéger Feuille" soit
désactivé et grisé. J'ai mis les lignes du code suivantes à la fin de
la macro qui met en place le menu
Dim Mycontrol, Mybar
Set Mycontrol = Mybar.Controls("Budget") 'nom du menu
With Mycontrol
.Controls("Proteger Feuilles").Enabled = False
End With
Or, la macro se plante au niveau de "Set Mycontrol = ..."
Qu'est-ce que j'ai mal fait ?

Merci d'avance de votre aide.
Cordialement,
René

"JPMonnier" a écrit dans le message de
news:
Bonjour,
Pour rendre un menu grisé (suivant une action quelconque, il faut lui
mettre la valeur Enabled
Extrait d'un ex :

Set Mycontrol = Mybar.Controls("Gestion des engagements") 'nom du menu
With Mycontrol
.Controls("Fermer sans sauvegarder").Enabled = False
.Controls("Ouvrir engagements sauvegardés").Enabled = True
.Controls("sauvegarder engagements actuels").Enabled = True
.Controls("Sauvegarder").Enabled = False
End With
With Mybar
.Controls("Choix").Enabled = False
.Controls("Quitter").Enabled = True
.Controls("Menu").Enabled = True
End With
End Sub

--
Cordialement

"René" a écrit dans le message de
news:
Bonjour,

Dans un classeur qui contient plusieurs macros, j'ai ajouté un menu
personnalisé à 3 niveaux.
Je voudrais que certains éléments de ce menu apparaissent en grisé
quand ils ne sont pas concerné, p.ex. une macro protège certaines
cellules et feuilles, une autre s'appelle "Ôter la protection".

1) Quel est le code pour désactiver et mettre en gris soit l'élément
"Protéger" ou "Ôter la protection" ?

2) Dans quel module faudra-t-il mettre ce code ?

Merci de votre aide

Cordialement,

René