Supprimer plusieurs lignes sur selection

Bonjour à tous

Dans mon tableaux j'aimerai supprimer les lignes pour les quelles en x est placé dans la première colonne.

Auriez-vous un bout de code pour se type de demande.

Merci d'avance

8supprimer.xlsm (9.63 Ko)

Bonjour,

Un test en passant par un filtre. Peut également être fait en testant les lignes une a une en partant du bas via une boucle en step -1 :

Sub SUPPR()
Dim LR%
With Worksheets("Feuil1")
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    .[B3].AutoFilter Field:=1, Criteria1:="x"
    On Error GoTo SORTIE
    .Range("A4:C" & LR).Cells.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    .AutoFilterMode = False
SORTIE:      MsgBox "Aucune ligne à supprimer"
    .AutoFilterMode = False
End With
End Sub

Cdlt,

Bonjour Ergotamine

Merci pour ton code

Par contre le message "aucune ligne à supprimer" même après la suppression des lignes sélectionnées.

Est-il possible si aucune sélection alors le message "aucune ligne à supprimer" et si on a sélectionné des lignes après la suppression avec un message x lignes ont été supprimée.

Merci

Bonjour,

Désolé il va falloir que j'étudie un peu plus le On Error Go To, cependant, une alternative qui fonctionne tout de même ! Si pas de ligne supprimée vous avez tout de même le message box qui apparaît et confirme l'absence de suppression de lignes.

Sub SUPPR()
Dim LR_I%, LR_F%
With Worksheets("Feuil1")
    LR_I = .Cells(.Rows.Count, 2).End(xlUp).Row
    .[B3].AutoFilter Field:=1, Criteria1:="x"
    On Error Resume Next
    .Range("A4:C" & LR_I).Cells.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    .AutoFilterMode = False
    LR_F = .Cells(.Rows.Count, 2).End(xlUp).Row
    MsgBox LR_I - LR_F & " ligne(s) ont été supprimée(s)", vbInformation
End With
End Sub

Cdlt,

Re Ergotamine

C'est implacable comme cela.

Par contre si j'ai plus de colonne je suis obligé de modifier cette partie de code

.Range("A4:C"

Je te remercie pour ton aide.

Bonne soirée

Bonsoir le fil,

Par contre le message "aucune ligne à supprimer" même après la suppression des lignes sélectionnées.

Si pas de ligne supprimée vous avez tout de même le message box qui apparaît et confirme l'absence de suppression de lignes.

Peut-être ainsi:

Sub SUPPR()
 Dim LR_I%, LR_F%, NbLig%

  Application.ScreenUpdating = False

   With Worksheets("Feuil1")
    LR_I = .Cells(.Rows.Count, 2).End(xlUp).Row
    .[B3].AutoFilter Field:=1, Criteria1:="x"
     NbLig = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
      If NbLig = 0 Then
       .AutoFilterMode = False: MsgBox "Aucune ligne à supprimer", vbInformation: Exit Sub
      Else
      .Range("A4:C" & LR_I).Cells.SpecialCells(xlCellTypeVisible).EntireRow.Delete
      .AutoFilterMode = False
       LR_F = .Cells(.Rows.Count, 2).End(xlUp).Row
       MsgBox LR_I - LR_F & " ligne(s) ont été supprimée(s)", vbInformation
     End If
   End With
End Sub

https://forum.excel-pratique.com/excel/detecter-le-resultat-d-un-filtre-vide-118676

14supprimer-2.xlsm (13.69 Ko)

Bonne soirée,

Bonjour xorsankukai

Merci pour ton aide

Si j'ai plus de colonne je suis obligé de modifier

.Range("A4:C" & LR_I)

Bonne journée

Bonjour à tous,

@xorsankukai : Merci beaucoup pour le NbLigne, beaucoup plus propre !

@netparty : Non cela n'a pas d'importance. Au final nous aurions pu indiquer

.Range("A4:A" & LR_I)

Car derrière nous indiquons que nous supprimons la ligne entière via la propriété EntireRow de la cellule visible.

Cdlt,

Merci à tous

Bonne journée

Rechercher des sujets similaires à "supprimer lignes selection"