XL 2016 EXCEL VBA : empecher copier/coller et DragAndDrop sur les 2 onglets d'un fichier, mais pas sur d'autres fichier alors que le 1er fichier reste ouvert

Thibthib

XLDnaute Nouveau
Bonjour !

Je me tourne vers vous car la limite de mes compétences est largement atteinte et je n'arrive pas à trouver de solution sur les forums... Je m'en remet aux experts!
Excusez moi d'avance si mes termes ne sont pas très justes, c'est mon 1er post! :)

Alors voici mon problème :
j'ai un fichier Excel (appelons le Fichier1) composé de deux onglets.
je voudrais empêcher le copier coller et le DragAndDrop sur ce Fichier1 (donc sur les deux onglets), mais pas sur d'autres classeurs et cela malgré que Fichier1 reste ouvert!

ce que j'ai fait pour le moment, c'est que j'ai mis sur chaque "feuille" de mon "VBA Project (Fichier1)" le code suivant :

Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub

=> à ce moment là, le copier/coller est bien désactivé sur cette feuille uniquement, mais c'est pour le drag and drop que cela se complique
car je ne trouve pas de moyen de désactiver le drag and drop sans passer par Application.CellDragAndDrop ... qui s'applique dans tous les classeurs!
j'ai donc mis à la suite du code précédent :

Private Sub Worksheet_Activate()
Application.CellDragAndDrop = False
End Sub

Private Sub Worksheet_Deactivate()
Application.CellDragAndDrop = True
End Sub

=> vous comprenez donc que dans Fichier1 lorsque je change d'onglet, le Deactivate de l'onglet que je quitte est inhibé par le activate de l'autre onglet que j'ouvre... et je ne peux donc toujours pas drag and drop si je vais dans un autre classeur!

et j'ai créé un 3eme onglet dans Fichier1 où je n'ai mis que la partie :
Private Sub Worksheet_Deactivate()
Application.CellDragAndDrop = True
End Sub

ainsi, en se mettant sur ce 3eme onglet puis en allant sur un autre classeur, là le drag and drop fonctionne sur cet autre classeur !

Ma question est donc de trouver un moyen de supprimer ce troisième onglet, et modifier mes codes dans mes autres feuilles afin de pouvoir rester sur n'importe lequel des deux premiers onglets du Fichier1, et de pouvoir quand même utiliser drag and drop lorsque je suis dans un autre classeur.

Désolé encore pour mes termes probablement inappropriés...

N'hésitez pas si vous avez des questions !

Je vous remercie d'avance

Thibaud
 

Discussions similaires

Réponses
6
Affichages
1 K