Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Reponse As Integer
Dim Plage As Range 'Plage de lignes adjacentes
'Si 1 ou plusieurs lignes sont sélectionnées (lignes adjacentes car areas.count = 1)
If target.Areas.Count = 1 Then
If target.Address = Range(Rows(target.Row), _
Rows(target.Row + target.Rows.Count - 1)).Address Then
Reponse = MsgBox("Voulez-vous supprimer la(les) ligne(s) " & target.Row & _
" à " & target.Row + target.Rows.Count - 1 & " ?", vbYesNo)
If Reponse = vbYes Then 'Choix = supprimer
'Déprotection de la feuille
ActiveSheet.Unprotect Password:="jb"
'Suppression des lignes sélectionnées
Range(Rows(target.Row), _
Rows(target.Row + target.Rows.Count - 1)).Delete
'Reprotection de la feuille
ActiveSheet.Protect Password:="jb", ...
ElseIf Reponse = vbNo Then
Exit Sub 'Quitte la macro
End If
End If
'Si plusieurs lignes complètes non adjacentes sont sélectionnées : suppression des lignes ou pas ? (lignes non adjacentes car areas.count > 1)
ElseIf target.Areas.Count > 1 Then
For Each Plage In target.Areas
'Si 1 ou plusieurs lignes sont sélectionnées
If Plage.Address = Range(Rows(Plage.Row), _
Rows(Plage.Row + Plage.Rows.Count - 1)).Address Then
Reponse = MsgBox("Voulez-vous supprimer la(les) ligne(s) " & Plage.Row & _
" à " & Plage.Row + Plage.Rows.Count - 1 & " ?", vbYesNo)
If Reponse = vbYes Then 'Choix = supprimer
'Déprotection de la feuille
ActiveSheet.Unprotect Password:="jb"
'Suppression des lignes sélectionnées
Range(Rows(Plage.Row), Rows(Plage.Row + _
Plage.Rows.Count - 1)).Delete
'Reprotection de la feuille
ActiveSheet.Protect Password:="jb", ...
ElseIf Reponse = vbNo Then
Exit Sub 'Quitte la macro
End If
End If
Next Plage
End If
End Sub