Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Interdiction de Copier/Couper cellules ou plages de cellules en vba

deb84

XLDnaute Nouveau
Bonjour à tous,
Je voudrais interdire l’option copier/couper pour les feuilles d’un fichier. Lorsque ma macro s’exécute , le résultat s’ouvre dans un nouveau fichier que l’utilisateur est libre de sauvegarder si il le souhaite. Je veux éviter qu’ il puisse en modifier les résultats…J’ai réussi à créer un macro qui protège avec un code les cellules de la feuille. MAIS l’utilisateur a tjrs la possibilité de copier l’onglet ou de sélectionner une plage de cellules pour les coller dans un autre fichier et les modifier à sa guise….ce que je ne veux pas ! Je voudrais donc que l’option couper/copier d’une cellule et plage de cellules soit interdite…(si possible avec un code…je ne sais pas si je demande la lune….). Si l’utilisateur essaie de copier/couper les résultats alors une msgbox s’afficherait disant ‘vous n’êtes pas autorisé à copier/modifier les résultats’.
Alors j’ai d’abord essayé le code suivant pour afficher la MSgBox (mais sans succès…)
Sub CopyDelte()


If ActiveSheet.Copy Or ActiveSheet.Cut Then
vRet = MsgBoxPerso("Vous n'êtes pas autorisé à modifier le résultat obtenu", T1 & N & T2, vCritical, "Ok", "Book Antiqua", 11, vnormal, vCenter)

Else: Exit Sub
End If
End Sub

Ensuite, j’ai utilisé (ou plutôt essayé) ce code pour interdire le copier/couper, encore une fois sans succès. Alors vu que je n’ai pour le moment jamais utilisé de private sub (en gros je n’y comprends pas grd chose), je crois qu’il y a qqch que j’ai du mal faire.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
End Sub

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


D’avance un grand merci. J’espère que quelqu’un pourra m’aider à élucider ce mystère !

Deb
 

Theze

XLDnaute Occasionnel
Re : Interdiction de Copier/Couper cellules ou plages de cellules en vba

Bonjour,

Peut être qu'un simple "CutCopyMode = False" pourrait suffire en quittant le classeur ? A tester :
Code:
Private Sub Workbook_Deactivate()
    
    Application.CutCopyMode = False
    
End Sub

Hervé.
 

deb84

XLDnaute Nouveau
Re : Interdiction de Copier/Couper cellules ou plages de cellules en vba

Bonjour Hervé,

Merci pour ta réponse. J'ai copié ton code dans mon Workbook, mais j'arrive toujours à copier/couper & coller. J'ai aussi essayé en collant le code dans le module, mais sans succès.

Est ce que tu aurais une autre proposition ou alors peut etre que je devrai placer ce code ailleurs?

D'avance merci

Deb
 

sixair

XLDnaute Junior
Re : Interdiction de Copier/Couper cellules ou plages de cellules en vba

Bonjour,

tu peux essayer ça, à mettre dans ThisWorkbook:

Code:
Private Sub Workbook_Deactivate()
Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
Application.CutCopyMode = False
Application.CommandBars("Ply").Enabled = False
End Sub

Quand à mettre un message, il faudrait un événement Copy !

Cordialement
 

deb84

XLDnaute Nouveau
Re : Interdiction de Copier/Couper cellules ou plages de cellules en vba

Merci bcp Sixair. Ca marche à merveilles. J'ai un tout petit probleme. L'interdiction s'applique à tous les fichiers excel ouverts. Or, je souhaiterai que le code ne s'applique qu'au fichier en question. Est-ce possible?

D'avance merci
Deb
 

Discussions similaires

Réponses
7
Affichages
361
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…