Dim MemoSel As Range, NewSel As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If MemoSel Is Nothing Then Set MemoSel = Selection: Exit Sub
If MemoSel.Address = Target.Address Then Exit Sub
Dim cel As Range
If Union(Target, MemoSel).Address = MemoSel.Address Then
Application.EnableEvents = False
Set NewSel = Nothing
For Each cel In MemoSel
If Intersect(cel, Target) Is Nothing Then
If NewSel Is Nothing Then
Set NewSel = cel
Else
Set NewSel = Union(NewSel, cel)
End If
End If
Next
NewSel.Select
Application.EnableEvents = True
End If
Set MemoSel = Selection
End Sub
Effectivement CTRL permet de déselectionner une cellule, mais pas une zone (obligé de cliquer les cellules une par une)
Dim MemoSel As Range, NewSel As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If MemoSel Is Nothing Then Set MemoSel = Selection: Exit Sub
If MemoSel.Address = Target.Address Then Exit Sub
Dim c As Range, cel As Range
For Each c In Target
If Intersect(c, MemoSel) Is Nothing Then GoTo 1
Next c
Application.EnableEvents = False
Set NewSel = Nothing
For Each cel In MemoSel
If Intersect(cel, Target) Is Nothing Then
If NewSel Is Nothing Then
Set NewSel = cel
Else
Set NewSel = Union(NewSel, cel)
End If
End If
Next
NewSel.Select
Application.EnableEvents = True
1 Set MemoSel = Selection
End Sub