OVH Cloud OVH Cloud

Blocage Excel

3 réponses
Avatar
Fabrice
Bonjour,

Je souhaite limiter les possibilités d'Excel en interdisant par exemple la
possibilité d'imprimer (par le menu et le Ctrl-P), ou de faire copier /
Coller.

Quelqu'un aurait-il une idée (Active X ou autre)

Merci d'avance

3 réponses

Avatar
michdenis
Bonjour Fabrice,

En 3 étapes :

A ) copier/coller

Pour empêcher le copier/coller (plage de cellules... ne s'applique pas aux objets dans les feuilles de calcul), copie dans le module
ThisWorkbook de ton classeur)

Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

- pour empêcher de copier vers un autre classeur et/ou de coller dans un autre
classeur (code toujours à coller dans le module ThisWorkbook du classeur à
'protéger')

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

P.S. Il es toujours possible de copier des données en provenance de d'autres application qu'Excel.


B )

Comment désactiver un raccourci clavier :
'--------------------------
Sub LesTouches()

'pour désactiver un raccourci clavier
Application.OnKey "^p", ""

'revenir à la normale
Application.OnKey "^p"

End Sub
'--------------------------


C )

Pour désactiver une commande de la barre d'outils

A ) Id : 2521 = bouton imprimer barre d'outils standard
B ) Id : 4 = commande "imprimer" du menu fichier

'--------------------------
Sub InhiberCommandeBarreOutils()
Dim C As CommandBarControl
arr = Array(4, 2521)
For Each elt In arr
For Each C In CommandBars.FindControls(msoControlButton, elt)
C.Enabled = False
Next
Next
End Sub
'--------------------------

'pour les activer tu modifies C.Enabled = True dans la procédure.



Salutations!



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

Je souhaite limiter les possibilités d'Excel en interdisant par exemple la
possibilité d'imprimer (par le menu et le Ctrl-P), ou de faire copier /
Coller.

Quelqu'un aurait-il une idée (Active X ou autre)

Merci d'avance
Avatar
Fabrice
Merci beaucoup pour ta réponse, j'ai essayé, tout est ok, pourrais-tu encore
me dire comment trouver les id des menus que je souhaite retirer ? ou trouver
la doc ?

les menus à retirter sont au minimum :
couper du menu contextuelle (click droit)
copier du menu contextuelle (click droit)
coller du menu contextuelle (click droit)
visualiser le code sur click droit de la feuille
déplacer ou coller sur click droit de la feuille

voir d'autres...

Encore merci








Bonjour Fabrice,

En 3 étapes :

A ) copier/coller

Pour empêcher le copier/coller (plage de cellules... ne s'applique pas aux objets dans les feuilles de calcul), copie dans le module
ThisWorkbook de ton classeur)

Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

- pour empêcher de copier vers un autre classeur et/ou de coller dans un autre
classeur (code toujours à coller dans le module ThisWorkbook du classeur à
'protéger')

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

P.S. Il es toujours possible de copier des données en provenance de d'autres application qu'Excel.


B )

Comment désactiver un raccourci clavier :
'--------------------------
Sub LesTouches()

'pour désactiver un raccourci clavier
Application.OnKey "^p", ""

'revenir à la normale
Application.OnKey "^p"

End Sub
'--------------------------


C )

Pour désactiver une commande de la barre d'outils

A ) Id : 2521 = bouton imprimer barre d'outils standard
B ) Id : 4 = commande "imprimer" du menu fichier

'--------------------------
Sub InhiberCommandeBarreOutils()
Dim C As CommandBarControl
arr = Array(4, 2521)
For Each elt In arr
For Each C In CommandBars.FindControls(msoControlButton, elt)
C.Enabled = False
Next
Next
End Sub
'--------------------------

'pour les activer tu modifies C.Enabled = True dans la procédure.



Salutations!



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

Je souhaite limiter les possibilités d'Excel en interdisant par exemple la
possibilité d'imprimer (par le menu et le Ctrl-P), ou de faire copier /
Coller.

Quelqu'un aurait-il une idée (Active X ou autre)

Merci d'avance






Avatar
michdenis
Bonjour Fabrice,

Voici une procédure qui va t'afficher dans une feuille de calcul la liste des commandes et des id associiées.
'--------------------------------------------
Sub FindControlID()

Dim B As Object, Nb As Integer, X As Integer
Nb = Application.CommandBars.Count
[A1].Resize(, 2).Value = Array("Caption", "ID")

For X = 1 To Nb
For Each B In Application.CommandBars.Item(X).Controls
With [A65536].End(xlUp).Offset(1)
.Value = B.Caption
.Offset(, 1).Value = B.ID
End With
Next
Next
Range("A1:B1").EntireColumn.AutoFit
Set A = Nothing: Set B = Nothing
End Sub
'--------------------------------------------


Salutations!



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

Merci beaucoup pour ta réponse, j'ai essayé, tout est ok, pourrais-tu encore
me dire comment trouver les id des menus que je souhaite retirer ? ou trouver
la doc ?

les menus à retirter sont au minimum :
couper du menu contextuelle (click droit)
copier du menu contextuelle (click droit)
coller du menu contextuelle (click droit)
visualiser le code sur click droit de la feuille
déplacer ou coller sur click droit de la feuille

voir d'autres...

Encore merci








Bonjour Fabrice,

En 3 étapes :

A ) copier/coller

Pour empêcher le copier/coller (plage de cellules... ne s'applique pas aux objets dans les feuilles de calcul), copie dans le
module
ThisWorkbook de ton classeur)

Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

- pour empêcher de copier vers un autre classeur et/ou de coller dans un autre
classeur (code toujours à coller dans le module ThisWorkbook du classeur à
'protéger')

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

P.S. Il es toujours possible de copier des données en provenance de d'autres application qu'Excel.


B )

Comment désactiver un raccourci clavier :
'--------------------------
Sub LesTouches()

'pour désactiver un raccourci clavier
Application.OnKey "^p", ""

'revenir à la normale
Application.OnKey "^p"

End Sub
'--------------------------


C )

Pour désactiver une commande de la barre d'outils

A ) Id : 2521 = bouton imprimer barre d'outils standard
B ) Id : 4 = commande "imprimer" du menu fichier

'--------------------------
Sub InhiberCommandeBarreOutils()
Dim C As CommandBarControl
arr = Array(4, 2521)
For Each elt In arr
For Each C In CommandBars.FindControls(msoControlButton, elt)
C.Enabled = False
Next
Next
End Sub
'--------------------------

'pour les activer tu modifies C.Enabled = True dans la procédure.



Salutations!



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

Bonjour,

Je souhaite limiter les possibilités d'Excel en interdisant par exemple la
possibilité d'imprimer (par le menu et le Ctrl-P), ou de faire copier /
Coller.

Quelqu'un aurait-il une idée (Active X ou autre)

Merci d'avance