Salut xxmedxx,
Salut Djidji,
en VBA avec la fonction GetAsyncKeyState() à déclarer dans un Module général
- en [C:C] uniquement ;
- tu effectues ta première sélection ;
- ensuite, tu gardes la touche CTRL enfoncée pour sélectionner les autres lignes ;
- tu verras les sélections mises en gras : ce sont les lignes à conserver ;
- à ta dernière sélection, tu lâches CTRL AVANT de lâcher le bouton de la souris ;
- si tu loupes cette dernière manip', tu la répètes en [C1], histoire de ne pas perdre toutes tes sélections.
J'imagine que c'est une ligne d'en-têtes qui ne sera pas concernée par l'opération ;
- une MsgBox te demandera une confirmation de suppression.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Selection, Columns(3)) Is Nothing Then
If GetAsyncKeyState(17) <> 0 And Selection.Row > 1 Then Selection.Font.Bold = True
If GetAsyncKeyState(17) = 0 And Selection.Areas.Count > 1 Then
iRow = Range("C" & Rows.Count).End(xlUp).Row
If MsgBox("Confirmez-vous la suppression des lignes non-sélectionnées?", vbCritical + vbYesNo, "Suppression") = vbYes Then
For x = 2 To iRow
If Range("C" & x).Font.Bold = False Then Range("C" & x).ClearContents
Next
Range("C2:C" & iRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlUp
End If
Range("C2:C" & iRow).Font.Bold = False
[C1].Select
End If
End If
'
Application.ScreenUpdating = True
Application.EnableEvents = True
'
End Sub
A+