J'ai beaucoup appris de ce que je viens de lire, mais reste encore bloqué sur une difficulté.
Je voudrais interdire les copier coller et Drag & Drop mais avec une exception.
Si la zone copiée dans la feuille 1 se situe dans la colonne I je voudrais pouvoir le copier dans la feuille 2
dans la même colonne. Dans tous les autres cas copier coller et Drag & Drop doivent être impossible.
Voici ce que j'ai écrit :
Private Sub Workbook_Open()
'Interdit le tirage des formules dans les 4 directions et le glisser déplacer
Application.CellDragAndDrop = False
End Sub
____________________________________________________________________________________
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' reperer la zone receptrice et vérifier qu'elle se situe en colonne 9
Dim Plage As String
Plage = Selection.Address
colonne = ActiveCell.Column
If colonne = 9 Then ' Colonne I
Application.CutCopyMode = True
'MsgBox ("Workbook_SheetSelectionChange TRUE")
Else
'Interdit le collage sur la même feuille que celle qui a servi à faire la copie
Application.CutCopyMode = False
End If
End Sub
______________________________________________
Private Sub Workbook_Activate()
Dim Plage As String
Plage = Selection.Address
colonne = ActiveCell.Column
If colonne = 9 Then
Application.CutCopyMode = True
'MsgBox ("Workbook_SheetActivate TRUE")
Else
'Interdit le collage sur la même feuille que celle qui a servi à faire la copie
Application.CutCopyMode = False
End If
End Sub
_________________________________________________________________
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Active le tirage des formules dans les 4 directions et
'la technique du glisser-déplacer pour les cellules.
Application.CellDragAndDrop = True
Application.CutCopyMode = True
Private Sub Worksheet_Activate()
Dim Plage As String
Plage = Selection.Address
colonne = ActiveCell.Column
If colonne = 9 Then
Application.CutCopyMode = True
Else
'Interdit le collage sur la même feuille que celle qui a servi à faire la copie
Application.CutCopyMode = False
End If
Private Sub Worksheet_Activate()
Dim Plage As String
Plage = Selection.Address
colonne = ActiveCell.Column
If colonne = 9 Then
Application.CutCopyMode = True
'MsgBox ("WorkSheetActivate Bénévoles TRUE")
Else
'Interdit le collage sur la même feuille que celle qui a servi à faire la copie
Application.CutCopyMode = False
End If
Pas de souci pour le COPIER
Lorsque je me positionnes sur feuille 2 en colonne I je ne peux pas faire le COLLER
(Je ne peux pas faire de coller nulle part d'ailleurs)
J'ai noté aussi qu'en faisant apparaître le presse papier OFFICE le Coller fonctionne....mais sans aucune restrictions...ce qui ne me convient bien sûr pas!
Merci Marmotte, cela marche parfaitement bien.
Néanmoins j'ai souhaité introduire une exception à l'interdiction du Copier/coller en autorisant uniquement cette fonction lorsque la colonne copiée est la colonne I et que la colonne réceptrice (d'une autre feuille) est également I.
Pour ce faire j'ai ajouté dans le code quelques tests qui remettent le copier/coller en mode TRUE.
par exemple dans le Worksheet activate ou le Workbook_SheetSelectionChange:
Private Sub Worksheet_Activate()
Application.CutCopyMode = False
Dim Plage As String
Plage = Selection.Address
colonne = ActiveCell.Column
If colonne = 9 Then
Application.CutCopyMode = True
End If
End Sub
Résultat: la fonction coller reste désespérément inopérante.