Suppression de lignes suivant critères mais que sur une plage données

Bonjour à tous.

J'aimerais supprimer des lignes suivant un critère par exemple

"Arrêt bouton homme-mort" mais que sur la plage G1:I29

La plage sera évolutive, là ce n'est qu'un exemple

Ce bout de code supprime la ligne entière et non

DLig = Sheets("Tri").Range("F" & Rows.Count).End(xlUp).Row

For i = DLig To 2 Step -1

If Cells(i, 8) = "Arrêt bouton homme-mort" Then Rows(i).EntireRow.Delete

Next i

J'ai essayé de nommé une plage mais ça ne marche pas

Par avance merci

6suppr-lign.xlsx (18.05 Ko)

Bonjour,

Un exemple :

Sub Macro1()
Dim Dlig As Integer
Dim Z As Integer

    Dlig = Sheets("List1").Range("G" & Rows.Count).End(xlUp).Row
    For Z = Dlig To 2 Step -1

        If Cells(Z, "G") = "Arrêt bouton homme-mort" Then
            Range("G" & Z & ":i" & Z).Delete Shift:=xlUp
        End If
    Next Z
End Sub

ric

Bonjour

Comme son nom l'indique EntireRow c'est toute la ligne, donc sur toutes les colonnes

Le seul moyen simple et logique est de travailler en tableau structuré

7suppr-lign.xlsm (17.75 Ko)

Edit : ric plus rapide ;-) ! Cela fait 2 solutions

Bonjour 78chris,

cela ne marche pas, voilà je que j'obtiens

image image

Bonjour à tous,

Regarde à nouveau le code que je t'ai proposé >

J'avais détecté l'erreur et l'ai corrigé >

Sauf que tu es passé entre-temps.

ric

RE

C'est le code de ric, pas le mien

Il fonctionne sur l'exemple que tu as posté

Edit arf nouvelle collision

Bonjour à tous,

@78chris ... sur ma machine > après la suppression de la ligne concernée > ton code provoque l'erreur 1004 "Erreur définie par l'application ou par l'objet" ...

ric

@ ric, merci ta méthode fonctionne bien, si j'ai un seul critère. J'aurais dû précisé qu'il en avais plusieurs.

Je pensais que je pouvais rajouter mes critères les uns après les autres

image

@78chris ta méthode fonctionne parfaitement mais je n'ai pas testé avec plusieurs critères.

Merci à tous les deux

Bonjour à tous,

Ainsi, ça fonctionne bien ...

Sub Macro1()
Dim Dlig As Integer
Dim Z As Integer

    Dlig = Sheets("List1").Range("G" & Rows.Count).End(xlUp).Row
    For Z = Dlig To 2 Step -1

        If Cells(Z, "G") = "Arrêt bouton homme-mort" Or Cells(Z, "G") = "Arrêt de pare-chocs" Then
            Range("G" & Z & ":i" & Z).Delete Shift:=xlUp
        End If
    Next Z
End Sub

ric

Tout fonctionne bien, j'aurais dû vérifier ma syntaxe encore merci pour votre aide

Dlig = Sheets("FLV01").Range("G" & Rows.Count).End(xlUp).Row

For Z = Dlig To 2 Step -1

If Cells(Z, "G") = "Arrêt bouton homme-mort" Then

Range("G" & Z & ":i" & Z).Delete Shift:=xlUp

End If

If Cells(Z, "G") = "Arrêt de pare-chocs" Then

Range("G" & Z & ":i" & Z).Delete Shift:=xlUp

End If

Next Z

Bonjour à tous,

Oui, et cela pourrait aussi s'écrire ...

ric

Sub Macro1()
Dim Dlig As Integer
Dim Z As Integer

    Dlig = Sheets("List1").Range("G" & Rows.Count).End(xlUp).Row
    For Z = Dlig To 2 Step -1

        If Cells(Z, "G") = "Arrêt bouton homme-mort" Then Range("G" & Z & ":i" & Z).Delete Shift:=xlUp
        If Cells(Z, "G") = "Arrêt de pare-chocs" Then Range("G" & Z & ":i" & Z).Delete Shift:=xlUp
    Next Z
End Sub

@78chris ... sur ma machine > après la suppression de la ligne concernée > ton code provoque l'erreur 1004 "Erreur définie par l'application ou par l'objet" ...

ric

RE

Effectivement sur 2010 cela fonctionne mais pas sur 365

Je m'étais posé la question de partir de la fin mais, comme 2010 accepte, j'ai gardé l'ordre

Sur 365 ceci fonctionne

Sub SupprimeLigne()
    With [Tableau2].ListObject
        For i = .ListRows.Count To 1 Step -1
            If .ListRows(i).Range.Cells(1, 1) = "Arrêt bouton homme-mort" Then .ListRows(i).Delete
        Next
    End With
End Sub

Si plusieurs choix, le plus simple est un filtre avancé utilisant une liste, suppression des résultats puis du filtre (via VBA) d'autant que les valeurs semblent uniques et que la boucle est alors inutile

78chris, ta proposition de faire un filtre avancé en vba m’intéresse

"Si plusieurs choix, le plus simple est un filtre avancé utilisant une liste, suppression des résultats puis du filtre (via VBA) d'autant que les valeurs semblent uniques et que la boucle est alors inutile"

Je prépare un fichier et je le mets sur le site

Bonjour à tous,

@78chris > Effectivement, cette nouvelle façon fonctionne sans erreur sur 365 ...

ric

Rechercher des sujets similaires à "suppression lignes suivant criteres que plage donnees"