OVH Cloud OVH Cloud

protection

4 réponses
Avatar
lionel
Bonjour,
J ai une feuille avec une protection, mais l utilisateur peux toujours aller
dans option cocher barre des formules et voir la formule comment faire
merci
lionel

4 réponses

Avatar
PMO
Bonjour,

Un code qui devrait résoudre votre problème.
j 'espère que vous comprendrez car c'est complexe.

MODULE DE CLASSE
1) Créez un module de classe et renommez le IMPERATIVEMENT ButtonEvents
2) Insérez y le code suivant
'*******************
Private WithEvents ButtonClickEvent As Office.CommandBarButton
'____________________________________
Private Sub ButtonClickEvent_Click _
(ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoFormule
Cancel = True
End Sub
'____________________________________
Public Sub Initialize(Button As Office.CommandBarButton)
Set ButtonClickEvent = Button
End Sub
'*******************
Tout cela pour émuler un bouton office qui possède l'évènement Click
qu 'on pourra utiliser, par la suite, pour intercepter l'action utilisateur
consistant à cliquer sur Outils/Options.


MODULE NORMAL
1) Insérez le code suivant dans un module général
'*******************
'#### Changer la valeur de la constante MAFEUILLE ####
'#### selon le nom de la feuille où s'applique la ####
'#### désactivation de la barre de formule. ####
'#### Changer "TEST" par "Toto" par exemple ####

Const MAFEUILLE As String = "TEST"
'######################################################
Public OptionsEvent As New ButtonEvents
'____________________________________
Sub BoutonOptions()
Dim i&
Dim B As CommandBar
Dim C As Office.CommandBarButton
Set B = Application.CommandBars("Tools")
For i& = 1 To B.Controls.Count
If B.Controls(i&).ID = 522 Then 'IDR2 => bouton Options
Set C = B.Controls(i&)
Exit For
End If
Next
OptionsEvent.Initialize C
End Sub
'____________________________________
Sub NoFormule(Optional void As Byte)
If ActiveSheet.Name <> MAFEUILLE Then Exit Sub
Application.Dialogs(320).Show
If Application.DisplayFormulaBar Then _
Application.DisplayFormulaBar = False
End Sub
'*******************
Le nom "TEST" de la Const MAFEUILLE As String = "TEST" est à adapter
selon le nom de la feuille concernée.
L 'argument Optional void As Byte est un argument bidon qui ne sert
qu 'à masquer la macro dans la boîte de macros. Vous pouvez l'enlever
si vous voulez.

MODULE EVENEMENTIEL
1) Insérez le code suivant dans le module évènementiel de feuille concernée
'*******************
Private Sub Worksheet_Activate()
Application.DisplayFormulaBar = False
Call BoutonOptions
End Sub

Private Sub Worksheet_Deactivate()
Application.DisplayFormulaBar = True
Set OptionsEvent = Nothing
End Sub
'*******************
Il n'y a plus qu'à essayer.

Cordialement.

--
PMO
Patrick Morange



Bonjour,
J ai une feuille avec une protection, mais l utilisateur peux toujours aller
dans option cocher barre des formules et voir la formule comment faire
merci
lionel






Avatar
Michel Gaboly
Bonsoir,

Il y a bien + simple et aucune macro n'est nécessaire, a fortiori un module de classe :-))

Déprotège ta feuille, puis va dans Format Cellule, onglet Prote ction.

Par défaut "Verrouillée" est cochée pour toutes les cellul es, et "Masquée" ne l'est pour aucune.

Coche "Masquée" pour les cellules dont tu veux que la formule ne soi t pas visible, ou éventuellement pour toutes les
cellules. Reprotège la feuille, et miracle, les formules des cellule s masquées ne sont + visibles. :-))))


Bonjour,

Un code qui devrait résoudre votre problème.
j 'espère que vous comprendrez car c'est complexe.

MODULE DE CLASSE
1) Créez un module de classe et renommez le IMPERATIVEMENT ButtonE vents
2) Insérez y le code suivant
'*******************
Private WithEvents ButtonClickEvent As Office.CommandBarButton
'____________________________________
Private Sub ButtonClickEvent_Click _
(ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoFormule
Cancel = True
End Sub
'____________________________________
Public Sub Initialize(Button As Office.CommandBarButton)
Set ButtonClickEvent = Button
End Sub
'*******************
Tout cela pour émuler un bouton office qui possède l'évà ¨nement Click
qu 'on pourra utiliser, par la suite, pour intercepter l'action utilisa teur
consistant à cliquer sur Outils/Options.


MODULE NORMAL
1) Insérez le code suivant dans un module général
'*******************
'#### Changer la valeur de la constante MAFEUILLE ####
'#### selon le nom de la feuille où s'applique la ####
'#### désactivation de la barre de formule. ####
'#### Changer "TEST" par "Toto" par exemple ####

Const MAFEUILLE As String = "TEST"
'######################################################
Public OptionsEvent As New ButtonEvents
'____________________________________
Sub BoutonOptions()
Dim i&
Dim B As CommandBar
Dim C As Office.CommandBarButton
Set B = Application.CommandBars("Tools")
For i& = 1 To B.Controls.Count
If B.Controls(i&).ID = 522 Then 'IDR2 => bouton Options
Set C = B.Controls(i&)
Exit For
End If
Next
OptionsEvent.Initialize C
End Sub
'____________________________________
Sub NoFormule(Optional void As Byte)
If ActiveSheet.Name <> MAFEUILLE Then Exit Sub
Application.Dialogs(320).Show
If Application.DisplayFormulaBar Then _
Application.DisplayFormulaBar = False
End Sub
'*******************
Le nom "TEST" de la Const MAFEUILLE As String = "TEST" est à ada pter
selon le nom de la feuille concernée.
L 'argument Optional void As Byte est un argument bidon qui ne sert
qu 'à masquer la macro dans la boîte de macros. Vous pouvez l 'enlever
si vous voulez.

MODULE EVENEMENTIEL
1) Insérez le code suivant dans le module évènementiel d e feuille concernée
'*******************
Private Sub Worksheet_Activate()
Application.DisplayFormulaBar = False
Call BoutonOptions
End Sub

Private Sub Worksheet_Deactivate()
Application.DisplayFormulaBar = True
Set OptionsEvent = Nothing
End Sub
'*******************
Il n'y a plus qu'à essayer.

Cordialement.




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
PMO
Bonjour Michel,

Bravo pour la manipulation qui devrait satisfaire Lionel.
Si j'ai élucubrer c'est parce que je ne la connaissais pas.

Cordialement.
--
PMO
Patrick Morange



Bonsoir,

Il y a bien + simple et aucune macro n'est nécessaire, a fortiori un module de classe :-))

Déprotège ta feuille, puis va dans Format Cellule, onglet Protection.

Par défaut "Verrouillée" est cochée pour toutes les cellules, et "Masquée" ne l'est pour aucune.

Coche "Masquée" pour les cellules dont tu veux que la formule ne soit pas visible, ou éventuellement pour toutes les
cellules. Reprotège la feuille, et miracle, les formules des cellules masquées ne sont + visibles. :-))))


Bonjour,

Un code qui devrait résoudre votre problème.
j 'espère que vous comprendrez car c'est complexe.

MODULE DE CLASSE
1) Créez un module de classe et renommez le IMPERATIVEMENT ButtonEvents
2) Insérez y le code suivant
'*******************
Private WithEvents ButtonClickEvent As Office.CommandBarButton
'____________________________________
Private Sub ButtonClickEvent_Click _
(ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoFormule
Cancel = True
End Sub
'____________________________________
Public Sub Initialize(Button As Office.CommandBarButton)
Set ButtonClickEvent = Button
End Sub
'*******************
Tout cela pour émuler un bouton office qui possède l'évènement Click
qu 'on pourra utiliser, par la suite, pour intercepter l'action utilisateur
consistant à cliquer sur Outils/Options.


MODULE NORMAL
1) Insérez le code suivant dans un module général
'*******************
'#### Changer la valeur de la constante MAFEUILLE ####
'#### selon le nom de la feuille où s'applique la ####
'#### désactivation de la barre de formule. ####
'#### Changer "TEST" par "Toto" par exemple ####

Const MAFEUILLE As String = "TEST"
'######################################################
Public OptionsEvent As New ButtonEvents
'____________________________________
Sub BoutonOptions()
Dim i&
Dim B As CommandBar
Dim C As Office.CommandBarButton
Set B = Application.CommandBars("Tools")
For i& = 1 To B.Controls.Count
If B.Controls(i&).ID = 522 Then 'IDR2 => bouton Options
Set C = B.Controls(i&)
Exit For
End If
Next
OptionsEvent.Initialize C
End Sub
'____________________________________
Sub NoFormule(Optional void As Byte)
If ActiveSheet.Name <> MAFEUILLE Then Exit Sub
Application.Dialogs(320).Show
If Application.DisplayFormulaBar Then _
Application.DisplayFormulaBar = False
End Sub
'*******************
Le nom "TEST" de la Const MAFEUILLE As String = "TEST" est à adapter
selon le nom de la feuille concernée.
L 'argument Optional void As Byte est un argument bidon qui ne sert
qu 'à masquer la macro dans la boîte de macros. Vous pouvez l'enlever
si vous voulez.

MODULE EVENEMENTIEL
1) Insérez le code suivant dans le module évènementiel de feuille concernée
'*******************
Private Sub Worksheet_Activate()
Application.DisplayFormulaBar = False
Call BoutonOptions
End Sub

Private Sub Worksheet_Deactivate()
Application.DisplayFormulaBar = True
Set OptionsEvent = Nothing
End Sub
'*******************
Il n'y a plus qu'à essayer.

Cordialement.




--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Michel Gaboly
Eculubré n'est pas le terme que j'aurais employé, mais j'avais bien supposé que tu ne devais pas la connaître.
Autrement, ne pas la proposer aurait été assez vicieux ;-)))


Bonjour Michel,

Bravo pour la manipulation qui devrait satisfaire Lionel.
Si j'ai élucubrer c'est parce que je ne la connaissais pas.

Cordialement.



--
Cordialement,

Michel Gaboly
www.gaboly.com