Problème sur code n'autorisant que la copie de valeur

Bonjour au forum,

J'essaie d'écrire un code pour n'autoriser que le copier/coller de valeur, quelque soit la méthode utilisée, pour un fichier que je dois partager avec beaucoup de collaborateurs.

Ceux-ci utilisent régulièrement le copier/coller ainsi que le glisser/déposer pour renseigner le fichier, qui comporte beaucoup de bordures différentes, et vu que celles-ci sont aussi copiées, le fichier ne ressemble plus à rien en quelques jours d'utilisation...

Ce code fonctionne très bien pour un copier/coller via clique droit et raccourci clavier :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
On Error Resume Next 'sécurité
With Application
  If .CutCopyMode Then
    .EnableEvents = False
    .Undo
    Selection.PasteSpecial xlPasteValues
    .OnUndo "", ""
    .OnRepeat "", ""
    .EnableEvents = True
  End If
End With
End Sub

Mais ce code là efface automatiquement le contenu de la cellule juste après la frappe (et est censé limiter le copier/coller aux valeurs, avec méthode clique droit, clavier et glisser/déposer) :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
On Error Resume Next 'sécurité
With Application
  If .CutCopyMode Then
    .EnableEvents = False
    .Undo
    Selection.PasteSpecial xlPasteValues
    .OnUndo "", ""
    .OnRepeat "", ""
    .EnableEvents = True
 ElseIf .CellDragAndDrop Then
    .EnableEvents = False
    .Undo
    Selection.PasteSpecial xlPasteValues
    .OnUndo "", ""
    .OnRepeat "", ""
    .EnableEvents = True
  End If
End With
End Sub

J'ai un peu du mal à voir mon erreur...

Auriez-vous une idée ?

Merci !

Nico.

Rechercher des sujets similaires à "probleme code autorisant que copie valeur"