Action sur le menu d'Excel

Bonjour ,

Je suis nouveau sur ce forum et assez novice en programmation de macro…

Je n’ai pas trouvé la solution pour faire ce que voudrai, si elle existe sur votre forum je ne l’ai pas vu et dans ce cas je suis désolé pour ce doublon…

Voilà :

J’ai Excel 2003.

J’ai créé un bouton qui me permet de protéger et/ou déprotéger ma feuille, et le texte du bouton change selon son statut (protégée ou non) lors d’un click sur ce bouton. Cela fonctionne très bien, mais je voudrai que dans le cas d’une protection et/ou d’une dé protection par l’intermédiaire de la barre d’outils du menu d' Excel (Outils/Protection/Protéger la feuille… ou Ôter la protection de la feuille…) que le texte de mon bouton change, donc je cherche à faire une macro qui détecte cette action manuelle sur la barre d’outils.

J’espère que je m’explique à peu près bien, et je sollicite vos solutions.

Merci d’avance

Bonjour,

Essaie ce code :

Sub test()
'Macro Dan pour Rigder le 20/07/2010
ActiveSheet.Unprotect
Application.ScreenUpdating = False
With ActiveSheet.DrawingObjects(1)
If .Caption = "Protégée" Then
.Caption = "Déprotégée"
Else
.Caption = "Protégée"
ActiveSheet.Protect
End If
End With
End Sub

Code à mettre dans un module en VBA. Associe lui ensuite un bouton.

Le code suppose que tu n'as qu'un seul bouton sur ta feuille

Amicalement

Bonjour Dan,

Je te remercie pour ton code qui évidement, fonctionne très bien...

Mais, je me suis mal exprimé sans doute, car je fais déjà cela avec mon bouton...

Ce que je recherche, c'est le moyen de changer le caption du bouton en fonction d'une éventuelle modification volontaire par le menu d'Excel, c'est à dire par Outils/Protection/Protéger la feuille… ou Ôter la protection de la feuille… En effet dans ce cas précis, le bouton reste bien sur avec le caption qui y était avant cette action: "Outils/Protection/Protéger la feuille… ou Ôter la protection de la feuille…."

Tu as une idée ?

Merci d'avance

Bonjour,

c'est le moyen de changer le caption du bouton en fonction d'une éventuelle modification volontaire

En gros tu veux changer le nom du bouton si on utilise le menu d'excel "protection" ou par le click du bouton.

On pourrait aussi interdire l'accès au menu excel pour la protection.

Ton avis ?

Amicalement

Bonjour Dan,

En gros tu veux changer le nom du bouton si on utilise le menu d'excel "protection" ou par le click du bouton.

Oui c'est ça, par l'utilisation du menu Excel "protection" serai bien pour moi, car par le click du bouton je le fais déjà .

On pourrait aussi interdire l'accès au menu excel pour la protection.

Pourquoi pas, cela me parait aussi une bonne solution, mais actuellement je préfèrerai la première solution...

Sans exagérer, tu peux me donner les deux possibilités, je choisirai celle qui me va le mieux.

De toutes façons, celle que je ne me servirai pas maintenant pourra certainement m'être utile avec un autre classeur...

Amicalement et merci

Re,

Vois le fichier joint et fais quelques essais par menu / outils / protection ou via le bouton sur la feuille 1.

Lorsque tu adapteras à ton fichier veille à bien faire attention car là on touche aux menus d'excel.

Les actions peuvent changer le fonctionnement d'excel même surtout si tout n'est pas remis normal à la sortie.

Amicalement

37ridger.zip (10.79 Ko)

Bonjour Dan,

Whaou, exactement ce que je cherchai à faire

Rien de tel qu'un homme très bon pour faire ce genre de "truc" , c'est simple et efficace, bravo

Et surtout, merci

Un seul petit détail :

Quand la feuille est protégée soit par le menu ou par le bouton, le menu reste toujours à "Outils/Protection/Protéger la feuille… " au lieu de "Outils/Protection/Ôter la protection de la feuille…".

J'essaie de comprendre de mon coté mais j'avoue que je n'ose pas trop modifier, quand on ne connait pas...

Je vais tout de même adapter cela à mon fichier en faisant très attention, promis...

En tous cas, merci beaucoup

@+

re,

Un seul petit détail :

Quand la feuille est protégée soit par le menu ou par le bouton, le menu reste toujours à "Outils/Protection/Protéger la feuille… " au lieu de "Outils/Protection/Ôter la protection de la feuille…".

Impossible cela et il vaut mieux que ce ne soit pas cela d'ailleurs ... ou alors il y a quelque chose que je ne connais pas dans ton fichier. Si tu choisis "protection" --> "protéger la feuille", le menu change et devient "protection"--> "oter la protection" et inversément. Idem avec le bouton qui doit être associé à la macro "protection" qui se trouve dans le module 1 en VBA.

Vérifie bien ...

Si ok, n'oublie pas de cliquer sur le V de couleur vert pour cloturer le fil.

Amicalement

Non, non, je t'assure. Je ne l'ai d'ailleurs pas encore mis dans ma feuille, il est "tout brute" du téléchargement...

Je confirme après avoir fermer Excel et réessayé... Idem

Désolé...

Je crois que j'ai compris...

Quand je fais avec Excel ouvert avec une feuille vierge : Outils/Protéger/Protéger la feuille..., il y a une boite de dialogue nommée "Proteger de la feuille"qui s'ouvre avec différents choix de fermeture, genre "Sélectionner les cellules verouillées" etc... et quand je clique sur "ok", cela se met avec "Ôter la protection de la feuille..."

Mais cette boite ne doit pas avoir été prise en compte avec ta macro, enfin c'est ce que je penses...

Qu'en penses-tu ?

Amicalement

re,

Mais cette boite ne doit pas avoir été prise en compte avec ta macro, enfin c'est ce que je penses...

Bien entendu, le code agit sans que la boite de dialogue apparaisse. Tu n'en avais pas parlé

On peut bien entendu rajouter un mot de passe dans le code si tu le veux.

A te relire

Bonjour Dan,

Bien entendu, le code agit sans que la boite de dialogue apparaisse. Tu n'en avais pas parlé

On peut bien entendu rajouter un mot de passe dans le code si tu le veux.

En effet, donc précisions

Dans cette boite, ce que j'utilise :

_Protéger la feuille et le contenu des cellules verrouillées --> coché

_Pas de mot de passe

_Sélectionner les cellules verrouillées --> coché

_Sélectionner les cellules déverrouillées --> coché

Le reste --> non cochées

J'espère que cette fois je t'ai donné toutes les infos

Je ne modifie rien sans que tu ai eu la gentillesse de me confier ces modifications

A bientôt de te lire et merci d'avance si tu peux m'aider...

Bonjour Dan,

Je te joins une image de cette boite qui n'est pas une boite perso, mais elle fait partie d' Excel et apparaît juste après avoir cliqué sur "Protéger la feuille...". Elle n'a rien à voir avec mon fichier...

A bientôt de le lire

Bonjour Dan,

Je sollicite ton avis car j'ai beaucoup travaillé sur mon petit problème

Voilà ce que j'ai fait pour contourner l'affichage du menu qui reste à "Outils"-->"Protection"-->"Protéger la feuille..."

A l'ouverture du classeur je modifie le menu :

Private Sub Workbook_Open()

'Renommer le menu "Outils"-->"Protection"-->"Protection de la feuille..." en _

"Outils"-->"Protection"-->"Protection / Ôter la protection de la feuille..."

Application.CommandBars("Worksheet Menu Bar"). _

Controls("Outils").Controls("&Protection"). _

Controls("&Protéger la feuille...").Caption = "Protection / Ôter la protection de la &feuille..."

etc...

Puis à la fermeture je rétabli le menu :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Rétablir le menu "Outils-->Protection-->Protéger de la feuille..."

Application.CommandBars("Worksheet Menu Bar"). _

Controls("Outils").Controls("&Protection"). _

Controls("Protection / Ôter la protection de la &feuille...").Reset

ect...

Ainsi le menu reste à "Outils"-->"Protection"-->"Protection / Ôter la protection de la feuille..." mais cela devient plus explicite, et cela me convient très bien...

Mais j'ai besoin d'un petit coup de main si tu le veux bien :

Si j'ouvre mon classeur "X" qui contient le menu modifié, il faudrait empêcher l'ouverture d'un éventuel autre classeur "Y" (sachant que je ne peux pas savoir quel classeur serait ouvert ou même si ce peut être un nouveau classeur vierge). Ce nouveau classeur bien sur hériterai de la modification du menu, si le classeur "X" n'a pas été fermé... Et ça, c'est balo balo ...

Tu crois que c'est possible ?

Dans l'attente de te lire, merci d'avance

re,

Voilà ce que j'ai fait pour contourner l'affichage du menu qui reste à "Outils"-->"Protection"-->"Protéger la feuille..."

Heu... je ne comprends pas là. Les deux codes que tu cites dans ton post sont ceux que je t'ai placés dans mon fichier "Ridger.xls". Là je ne vois ton souci de l'affichage.

Ce nouveau classeur bien sur hériterai de la modification du menu...

Non car si tu places tes deux codes au même endroit c'est à dire dans THISWORKBOOK, tu peux ouvrir un autre classeur sans souci. Les deux codes ne fonctionnent que dans le fichier et non pas dans un autre classeur.

Bonjour Dan,

Heu... je ne comprends pas là. Les deux codes que tu cites dans ton post sont ceux que je t'ai placés dans mon fichier "Ridger.xls". Là je ne vois ton souci de l'affichage.

Pas tout à fait, puisque je change le nom (Caption) "Proteger la feuille..." en "Protection / Ôter la protection de la &feuille..." (ce nom aurai pu être "blablabla...") mais j'ai choisi "Protection / Ôter la protection de la &feuille..." pour simplement que cela soit plus parlant, c'est tout, mais bon le principale c'est que cela me va...

Non car si tu places tes deux codes au même endroit c'est à dire dans THISWORKBOOK, tu peux ouvrir un autre classeur sans souci. Les deux codes ne fonctionnent que dans le fichier et non pas dans un autre classeur.

Désolé mais ce coup ci c'est moi qui ne comprends pas ou alors je ne m'explique pas bien...

Ces deux codes sont bien dans THISWORKBOOK.....

Exemple :

1) j'ouvre mon classeur "X" (dont le menu Excel est modifié)

2) Pour une raison quelconque, quelqu'un ouvre un autre classeur "Y" (sans avoir fermé le classeur "X"). Excel hérite bien des modifications éventuelles du menu Excel

Ou alors je n'y comprends rien de rien.........

Essaye de m'expliquer car là vraiment je suis paumé

Si tu veux je peut peut être t'envoyer mon fichier par message privé ou Email.

Tiens moi au courant si tu le veux bien et dis moi privé ou Email

à bientôt

Re,

Je t'ai répondu trop vite et vient effectivement de comprendre ton souci. Désolé donc...

Il y a un moyen pour faire cela en ajoutant dans THISWORKBOOK les deux codes dans les deux macros suivantes :

Code 1

Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)
'... --> code identique à celui dans le code Private ...Beforeclose
End Sub

Code 2

Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
'... --> code identique à celui de Private ... workbook Open
End sub

De cette sorte si tu passes d'un classeur à l'autre (en cas de deux ouvert), la protection sera désactivée. Toutefois, le mieux serait de la rendre inaccessible dans le classeur Y si le classeur X est ouvert.

Amicalement

Re,

Ouf, là tu me rassure...

J'essaie cela rapidement et te tiens au courant

Je suppose que je dois supprimer les fichiers Beforeclose et workbook Open quand j'aurrai fait un copier/coller des codes, non ?

Re,

Je suppose que je dois supprimer les fichiers Beforeclose et workbook Open quand j'aurrai fait un copier/coller des codes, non ?

Les fichiers Beforeclose et workbook open ??

Si tu voulais dire les macros, non bien sûr. Dans Thisworkbook tu devras avoir 4 macros en tout. Beforeclose, workbook open, windowactivate et windowdesactivate.

Bonsoir Dan,

Bon ben voilà, SUPER, c'est exactement ce que je voulais

A un petit détail prêt :

Voir plus bas :

Mais non, tout est OK !!!

Je te remercie beaucoup, tu m'a sorti d'une belle panade...

Merci et peut être à plus si j'ai de nouveau un soucis.

En tous cas, j'ai beaucoup appris grâce à toi et à différentes recherches (notre ami est aussi "Goo...")

Je clique sur "résolu"

A plus et bonne soirée

Rechercher des sujets similaires à "action menu"