OVH Cloud OVH Cloud

Supprimer une commande d'un menu avec une macro

2 réponses
Avatar
Bouby
Bonjour,
Avec excel j'ai cr=E9=E9 une macro qui masque certaines=20
lignes (Selection.EntireRow.Hidden =3D True).
Je voudrais maintenant emp=EAcher les utilisateurs=20
d'afficher =E0 nouveau ces lignes avec la commande du menu=20
Format -> Ligne -> Afficher.
La solution =E0 laquelle j'ai pens=E9 c'est de supprimer=20
cette commande du menu.
Quelqu'un a-t'il une id=E9e sur la fa=E7on de proc=E9der pour=20
inhiber la commande "Format -> Ligne -> Afficher" ?
Par avance merci.

2 réponses

Avatar
Fredo \(67\)
Salut
Ne vaut il pas mieux protéger ta feuille ?

Outils -> Protection -> Protéger la feuille
avec contenu + objets + scénarios sélectionnés

et tu peux mettre un mot de passe

Mais cela va "bloquer" toutes tes cellules

Si certaines doivent rester accessibles, il faut des déverrouiller avant.

Bye

"Bouby" a écrit dans le message de
news:1e21d01c45509$a7a324d0$
Bonjour,
Avec excel j'ai créé une macro qui masque certaines
lignes (Selection.EntireRow.Hidden = True).
Je voudrais maintenant empêcher les utilisateurs
d'afficher à nouveau ces lignes avec la commande du menu
Format -> Ligne -> Afficher.
La solution à laquelle j'ai pensé c'est de supprimer
cette commande du menu.
Quelqu'un a-t'il une idée sur la façon de procéder pour
inhiber la commande "Format -> Ligne -> Afficher" ?
Par avance merci.
Avatar
anonymous
tu peux invallider cette commande du menu en mettant dans le programme evenementiel workbook open de Thisworkbook ou dans une sub auto open la procédure suivante. Je te rappelle qu'à la sortie de ton programme, il faudra inclure dans le programme evenementiel workbook beforeclose de Thisworkbook ou dans une sub auto close un appel à cette même procédure où CollControls(I).Enabled = true, sans quoi tu ne retrouverais pas cette commande à l'ouverture d'un autre fichier. Enfin, cette commande n'est pas une panacée, car c'est à la portée du 1er programmeur venu de remettre les commandes du menu built-in en fonction depuis une procédure identique placée dans un autre fichier excel.

Sub tartenpion()

Dim CollControls As CommandBarControls

'le ID:ˆ4 désigne la commande Afficher des menus "ligne" de "Format" et menu contextuel
'généré par le du clic droit sur des lignes

Set CollControls = Application.CommandBars.FindControls(ID:ˆ4)

For I = 1 To CollControls.Count
CollControls(I).Enabled = False
Next

end sub

Bon courage