'### Constantes à adapter ###
Const PLAGE_INTERDITE As String = "A1:D17,A22:D23"
Const MSG As String = "Vous n'avez pas le droit de passer au dessus de cette zone"
Const TITRE_MSG As String = "Attention!"
'############################
Private OldRange As String
Private bool As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range(PLAGE_INTERDITE), Target) Is Nothing Then
With Application
.EnableEvents = False
.Undo
If .CutCopyMode = xlCopy Then bool = True
.CutCopyMode = False
Range(OldRange).Select
MsgBox MSG, , TITRE_MSG
.EnableEvents = True
End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Range(PLAGE_INTERDITE), Target) Is Nothing Then
With Application
.EnableEvents = False
.CutCopyMode = False
Range(OldRange).Select
.EnableEvents = True
End With
If bool Then
bool = Not bool
Else
MsgBox MSG, , TITRE_MSG
End If
Else
OldRange = Target.Address
End If
End Sub