Interdire collage spécial
Bonjour le forum,
Je cherche à empêcher les utilisateurs de faire un copier /collage spécial. J'ai trouvé ce code mais j'ai une erreur au niveau de la ligne surlignée. Pourriez-vous m'aider. Merci
Application.CommandBars("Cell").Controls("Coller").Visible = False
Application.CommandBars("Cell").Controls("Collage spécial...").Visible = False
Application.CommandBars("Cell").Controls("Couper").Visible = False
Application.CommandBars("Cell").Controls("Insérer...").Visible = False
Application.CommandBars("Cell").Controls("Supprimer...").Visible = False
Application.CommandBars("Cell").Controls("Liste déroulante de choix...").Visible = False
'Application.CommandBars("Cell").Controls("Nommer une plage...").Visible = False
' Application.CommandBars("Cell").Controls("Lien hypertexte").Visible = False
Set Tools = Application.CommandBars("Cell")
With Tools.Controls.Add(, , , 3, True)
.BeginGroup = False
.Caption = "Coller..."
.OnAction = "Collage"
End Withbonjour Benoist28200,
Dans un module colle le code:
Option Explicit
Sub ToggleCutCopyAndPaste(Allow As Boolean)
'Activate/deactivate cut, copy, paste and pastespecial menu items
Call EnableMenuItem(21, Allow) ' cut
Call EnableMenuItem(19, Allow) ' copy
Call EnableMenuItem(22, Allow) ' paste
Call EnableMenuItem(755, Allow) ' pastespecial
'Activate/deactivate drag and drop ability
Application.CellDragAndDrop = Allow
'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
With Application
Select Case Allow
Case Is = False
.OnKey "^c", "CutCopyPasteDisabled"
.OnKey "^v", "CutCopyPasteDisabled"
.OnKey "^x", "CutCopyPasteDisabled"
.OnKey "+{DEL}", "CutCopyPasteDisabled"
.OnKey "^{INSERT}", "CutCopyPasteDisabled"
Case Is = True
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
.OnKey "+{DEL}"
.OnKey "^{INSERT}"
End Select
End With
End Sub
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
'Activate/Deactivate specific menu item
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name <> "Clipboard" Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub
Sub CutCopyPasteDisabled()
'Inform user that the functions have been disabled
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub Dans Thisworkbook, colle le code :
Option Explicit
Private Sub Workbook_Activate()
Call ToggleCutCopyAndPaste(False)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ToggleCutCopyAndPaste(True)
End Sub
Private Sub Workbook_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub
Private Sub Workbook_Open()
Call ToggleCutCopyAndPaste(False)
End Sub Sauvegarde et ferme le fichier.
Source: http://www.vbaexpress.com/kb/getarticle.php?kb_id=373
cordialement,
Re,
Ça y est , ça fonctionne mais le problème c'est que je veux garder le "Copier", c'est le "Collage spécial" que je ne veux pas.
bonjour à tous
quand quelqu'un a une question pas ordinaire, c'est que le problème est mal posé (dans 99% des cas)
ici quel est le problème de fond ?
Bonjour jmd...
Je me solidarise !
Je n'ai jamais été très favorable aux manipulations d'interface, il est rare que cela n'entraîne pas d'effet connexe non voulu...
De plus, depuis l'apparition du ruban, ce dernier échappe aux manipulations habituelles antérieures par VBA...
Et c'est de toute façon le plus souvent une fausse solution reposant sur une absence d'analyse du problème réel posé, auquel on a substitué un problème supposé par transposition sur l'interface...
J'appuie donc tout à fait la démarche consistant à revenir au vrai problème, celui posé basiquement : ce qu'on veut provoquer ou éviter, concrètement, et préalablement à toute généralisation hâtive !
Bonne journée.
Cordialement.
Bonjour jmd, bonjour MFerrand,
Le problème de fond est le suivant:
Je souhaite que les utilisateurs ne puissent faire qu' une seule manipulation :
Copier -> Coller les valeurs.
Merci
Ça c'est l'inverse de ce que tu demandais précédemment : interdire le collage spécial !
Maintenant tu ne veux donc autoriser que le collage valeurs
Par ailleurs cette formulation est déjà une traduction du problème incluant l'adoption tacite d'une solution, sans être conduit à cette solution par l'analyse du problème...
La question doit commencer au niveau de ce qui peut générer l'action de copier et coller, la nature de son contenu, les emplacements où cela peut se produire, les effets susceptibles de survenir que l'on veut éviter... examen nécessaire pour envisager tout l'éventail des moyens que l'on peut déployer pour y faire face...
Cordialement.
MFerrand a écrit :Ça c'est l'inverse de ce que tu demandais précédemment : interdire le collage spécial !
Maintenant tu ne veux donc autoriser que le collage valeurs
Je ne vois pas en quoi interdire le collage spécial est l'inverse d' autoriser le collage des valeurs, ce sont deux actions différentes.
J'avais trouver ceci mais le " .Controls("Collage spécial...").Enabled = False " ne fonctionne pas.
Sub coller_off()
With CommandBars(1).Controls("Edition")
.Controls("Coller").Enabled = False
.Controls("Collage spécial...").Enabled = False
End With
With CommandBars("Cell")
.Controls("Coller").Enabled = False
.Controls("Collage spécial...").Enabled = False
On Error Resume Next
With .Controls.Add(msoControlButton, , , 3, True)
.Caption = "Coller la valeur"
.OnAction = "Col_valeur"
End With
End With
End Sub
Sub coller_on()
With CommandBars(1).Controls("Edition")
.Controls("Coller").Enabled = True
.Controls("Collage spécial...").Enabled = True
End With
With CommandBars("Cell")
.Controls("Coller").Enabled = True
.Controls("Collage spécial...").Enabled = True
On Error Resume Next
.Controls("Coller la valeur").Delete
End With
End Sub
Sub Col_valeur()
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End SubJe ne vois pas en quoi interdire le collage spécial est l'inverse d' autoriser le collage des valeurs, ce sont deux actions différentes.
Le collage valeurs est un collage spécial !
Il y en a d'autres : on peut ne coller que les formats, on peut aussi tout coller, on peut assortir le collage d'opérations, transposer les données collées...
Et si on veut interdire le collage spécial en autorisant le collage standard (je ne sais d'ailleurs pas si ce serait possible), on interdirait pas le collage mais seulement la possibilité de le cibler de façon spécifique.

