Inhiber les fonctions copier/coller/couper....

remes

XLDnaute Junior
Bonsoir,
comme beaucoup et sachant que c'est une solution contournable, je cherche à bloquer le copier coller enfin tout ce qui permet de prendre des données sur un classeur ouvert et j'ai trouvé une macro assez lourde qui le fait et pour de bon car aprés, même en fermant le classeur ces fonctions restent inhiber dans excel alors que je pensais que ça ne s'appliquait qu'au classeur actif.
Pour rétablir tout ça il faut taper la même macro et remplacer False par True et tout rentre dans l'ordre.

Malgré tout je me dit que si je fais ça à mon boulot y pas interêt à ce que j'arrive plus à rétablir, d'ou ma question 1 : Ca craind ou pas?

2eme question, puisque ces fonctions sont vraiment totalement inhibées alors comment est-il possible que le copier coller que j'avais etablit via une macro pour déplacer des données lui fonctionne trés bien, ne devrait-il pas y avoir un "bug"??? je voudrai comprendre.
Voila la fameuse:

Sub InterdireCopierCouper()

On Error Resume Next
With Application
'disables shortcut keys
.OnKey "^c", ""
.OnKey "^v", ""
.OnKey "^x", ""
'Disables Copy
.CommandBars("Edit").FindControl(ID:=19).Enabled = False
.CommandBars("Edit").FindControl(ID:=848).Enabled = False
.CommandBars("Cell").FindControl(ID:=19).Enabled = False
.CommandBars("Column").FindControl(ID:=19).Enabled = False
.CommandBars("Row").FindControl(ID:=19).Enabled = False
.CommandBars("Button").FindControl(ID:=19).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=19).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=19).Enabled = False
.CommandBars("Standard").FindControl(ID:=19).Enabled = False
.CommandBars("Button").FindControl(ID:=848).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=848).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=848).Enabled = False
.CommandBars("Standard").FindControl(ID:=848).Enabled = False
.CommandBars("Ply").FindControl(ID:=848).Enabled = False

'Disables Cut
.CommandBars("Edit").FindControl(ID:=21).Enabled = False
.CommandBars("Cell").FindControl(ID:=21).Enabled = False
.CommandBars("Column").FindControl(ID:=21).Enabled = False
.CommandBars("Row").FindControl(ID:=21).Enabled = False
.CommandBars("Button").FindControl(ID:=21).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=21).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = False
.CommandBars("Standard").FindControl(ID:=21).Enabled = False

'Disable Paste
.CommandBars("Edit").FindControl(ID:=22).Enabled = False
.CommandBars("Cell").FindControl(ID:=22).Enabled = False
.CommandBars("Column").FindControl(ID:=22).Enabled = False
.CommandBars("Row").FindControl(ID:=22).Enabled = False
.CommandBars("Button").FindControl(ID:=22).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=22).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=22).Enabled = False
.CommandBars("Standard").FindControl(ID:=22).Enabled = False

'Disable PasteSpecial
.CommandBars("Edit").FindControl(ID:=755).Enabled = False
.CommandBars("Cell").FindControl(ID:=755).Enabled = False
.CommandBars("Column").FindControl(ID:=755).Enabled = False
.CommandBars("Row").FindControl(ID:=755).Enabled = False
.CommandBars("Button").FindControl(ID:=755).Enabled = False
.CommandBars("Formula Bar").FindControl(ID:=755).Enabled = False
.CommandBars("Worksheet Menu Bar").FindControl(ID:=755).Enabled = False
.CommandBars("Standard").FindControl(ID:=755).Enabled = False

End With
End Sub

Ca décoife un peu non par rapport au autres macro que j'avais trouvées.
Merci d'avance
 

jeanpierre

Nous a quitté
Repose en paix
Re : Inhiber les fonctions copier/coller/couper....

Bonsoir remes,

Première question, oui ça craint.... un peu ... beaucoup..... etc....

Seconde question, oui ça craint.... pareil....

Si tu veux jouer avec les barres d'outils libre à toi mais pense qu'un pc peut planter à n'inporte quel moment, qu'il peut y avoir une rupture dans la fourniture du courant.... et d'autres joyeusetées du genre...

J'ai pas tout dit....

Toujours partant ????

Jean-Pierre
 

remes

XLDnaute Junior
Re : Inhiber les fonctions copier/coller/couper....

Bonsoir Jeanpierre et encore merci pour tes réponses.
Ben je sentais un truc qui me disais attention mais j'allais le faire qd même car ça le fait bien mais vu comme ça (coupure 220v et autres) je suis calmé d'un coup. NON PLUS PARTANT!

Je me permet d'abuser encore, donc il n'y a rien qui allirait efficacité et no risiquo?

A bientôt ou bonne nuit merci.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Inhiber les fonctions copier/coller/couper....

Re,

Je ne crois pas, quelqu'un qui te dis le contraire ou te l'affirme prendra ses responsabilités à condition qu'il veuille bien les assumer..

Au delà de cela je ne sais pas trop quoi dire de plus.

A toi de voir.

Bonne nuit.

Jean-Pierre
 

ROGER2327

XLDnaute Barbatruc
Re : Inhiber les fonctions copier/coller/couper....

Bonsoir à tous
Il y a effectivement des risques.
Mais si je devais le faire, je l'écrirais comme ceci :
Code:
[COLOR="DarkSlateGray"][B]Sub InterdireCopierCouper()
Dim ct, i&, j&

   ct = Array(Array("Edit", 19, 21, 22, 755, 848), Array("Cell", 19, 21, 22, 755), Array("Row", 19, 21, 22, 755), _
      Array("Column", 19, 21, 22, 755), Array("Button", 19, 21, 22, 755, 848), Array("Formula Bar", 19, 21, 22, 755, 848), _
      Array("Worksheet Menu Bar", 19, 21, 22, 755, 848), Array("Standard", 19, 21, 22, 755, 848), Array("Ply", 848))

   On Error Resume Next
   With Application
      For i = 0 To UBound(ct)
         With .CommandBars(ct(i)(0))
            For j = 1 To UBound(ct(i))
               .FindControl(ID:=ct(i)(j)).Enabled = False
            Next j
         End With
      Next i

      .OnKey "^c", ""
      .OnKey "^v", ""
      .OnKey "^x", ""

   End With
End Sub

Sub AutoriserCopierCouper()
Dim ct, i&, j&

   ct = Array(Array("Edit", 19, 21, 22, 755, 848), Array("Cell", 19, 21, 22, 755), Array("Row", 19, 21, 22, 755), _
      Array("Column", 19, 21, 22, 755), Array("Button", 19, 21, 22, 755, 848), Array("Formula Bar", 19, 21, 22, 755, 848), _
      Array("Worksheet Menu Bar", 19, 21, 22, 755, 848), Array("Standard", 19, 21, 22, 755, 848), Array("Ply", 848))

   On Error Resume Next
   With Application
      For i = 0 To UBound(ct)
         With .CommandBars(ct(i)(0))
            For j = 1 To UBound(ct(i))
               .FindControl(ID:=ct(i)(j)).Enabled = True
            Next j
         End With
      Next i

      .OnKey "^c"
      .OnKey "^v"
      .OnKey "^x"

   End With
End Sub[/B][/COLOR]
ROGER2327
#2959
 

kjin

XLDnaute Barbatruc
Re : Inhiber les fonctions copier/coller/couper....

Bonsoir,
Bien que la dangeorosité de l'histoire me paraisse somme toute relative, il n'en demeure pas moins que
- si c'est le copier coller que tu crains
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
dans le module de thisworkbook, fera très bien la même chose
- que si on n'accepte pas l'activation des macros à l'ouverture du classeur, les boutons resteront actifs
- que de désactiver les boutons, n'empêche pas une macro de faire un copier/coller, mais si tu ne protèges pas ton projet, on pourra de toute façon accéder au code et donc réactiver les boutons
- que ça n'empêche en rien d'enregistrer le classeur sous un autre nom
A+
kjin
 

JNP

XLDnaute Barbatruc
Re : Inhiber les fonctions copier/coller/couper....

Bonjour le fil :),
D'accord avec vos remarques de bon sens, kjin.
Le seul bon moyen de protéger des données : Ne pas les publier.
ROGER2327
Entièrement d'accord aussi, mais l'autarcie n'est pas toujours une bonne politique pour vivre en société :p.
Toutefois (sachant que comme toute solution, ça peut être contourné...), pour publier des données sans qu'elles puissent être aisément recopiables, il est possible de faire un PDF protégé en copier/coller (voir pièce jointe), ce qui me parait une bonne alternative entre communiquer, et ne pas tout donner sur un plateau :D.
Le MdP est "test".
Bon WE :cool:
 

Pièces jointes

  • OF40184.zip
    14.5 KB · Affichages: 43

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa