VBA - Ré-activer fonction copier coller

Bonjour

J'ai du créer un classeur dans lequel j'interdis de faire des copier coller.

Je fais cela avec cette macro dans ThisWorkBook

Sub Workbook_DeActivate()
'ces deux macros servent à désactiver le copier/coller sur ce tableau
Dim oCtrl As Office.CommandBarControl
     For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
            oCtrl.Enabled = False
     Next oCtrl

     For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
            oCtrl.Enabled = False
     Next oCtrl

     Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    With Application
        .CellDragAndDrop = False
        .CutCopyMode = False 'Clear clipboard
    End With
End Sub

Cette macro a comme effet de bord de désactiver la possibilité d'étirer une valeur/fonction à partir du coin inférieur droit de la cellule sur mon classeur mais également sur tous les autres classeurs même après fermeture/ré-ouverture d'excel.

J'aimerais désactiver cette protection anti copier-coller à la fermeture du classeur, j'ai essayé de mettre le code suivant dans ThisWorkBook mais cela ne fonctionne pas :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CellDragAndDrop = True
End Sub

Auriez-vous une idée ?

Par avance merci

Hello,

Deux idées, dans ta macro thisworkbook desactive en général la fonctionnalité étirement essaye aussi d'ajouter ça pour voir.

Application.CutCopyMode = False

Après pourquoi pas dans this workbook tester si la macro

Workbook_DeActivate

est activée alors tu la désactive BeforeClose??

Cordialement.

Bon grâce à votre réponse, ça m'a aidé à réfléchir comment ces macros s'exécutaient.

Le problème vient du code que j'ai utilisé à l'origine qui est faux

La Sub Workbook_DeActivate sert à remettre en ordre toutes les actions que je veux supprimer sur mon tableau

La Sub Workbook_SheetSelectionChange sert à réellement bloquer le copier coller et l'étirement des cellules

Donc voici le bon code à mettre dans Thisworkbook :

Sub Workbook_DeActivate()
'cette macro sert à ré-activer le copier/coller sur ce tableau lorsque le tableau n'est plus au premier plan dans Excel
Dim oCtrl As Office.CommandBarControl
     For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
            oCtrl.Enabled = True
     Next oCtrl

     For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
            oCtrl.Enabled = True
     Next oCtrl

     Application.CellDragAndDrop = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   'sert à empêcher de copier d'une feuille à une autre
    With Application
        .CellDragAndDrop = False
        .CutCopyMode = False 'nettoie le presse papier
    End With
End Sub

Merci pour votre aide

Parfait, A bientôt sur le forum.

Pense

Cordialement

Rechercher des sujets similaires à "vba activer fonction copier coller"