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. :confused:

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
316

Statistiques des forums

Discussions
312 078
Messages
2 085 112
Membres
102 783
dernier inscrit
Basoje