Supprimer une ligne (ou la cellule) si la cellule contient un mot

Cette fonction a sans doute été décrite plusieurs fois, mais je n'ai pas retrouvé le script.

Dans ma macro, il y a déjà d'autres fonctions qui traitent la colonne A d'une feuille donnée.

On part donc du principe que cette colonne est toujours sélectionnée et que je veux juste supprimer les lignes (ou les cellules) qui contiennent le mot "Expire".

Les cellules concernées contiennent en fait le libellé complet suivant "Expire dans x jours" avec x qui varie. Or cette donnée ne m'intéresse pas, je veux la supprimer.

Voici la ligne que j'ai ajouté mais qui ne fonctionne pas:

        ' si la ligne contient le mot "Expire" > suppression de la ligne
        If InStr(1, .Cells(LigV, "A").Text, "Expire", 1) <> 0 Then .Rows(LigV + 1).Delete
        End If

Il y a sans doute des erreurs, mais je ne sais pas lesquelles.
Merci d'avance pour votre aide

Bonjour

A tester

' si la ligne contient le mot "Expire" > suppression de la ligne
If InStr(1, .Cells(LigV, "A").Text, "Expire", vbTextCompare) <> 0 Then
    .Rows(LigV).Delete
End If

Merci mais ça ne fonctionne pas non plus

Ce qui serait bien c'est de joindre le fichier anonymisé avec 4 ou 5 lignes

Crdlt

si on fait cela dans un boucle, on doit le faire dans une séquence descendant donc quelque chose comme for ligV=999 to 1 step -1

autrement cela ne fonctionne pas (100%)

C'est justement dans une boucle que voici

Sub lignesSP()
Dim DerLigV As Long, LigV As Long
With Sheets("Feuil1")
    DerLigV = .[A100000].End(xlUp).Row
    For LigV = DerLigV To 2 Step -1
        ' si la ligne contient un prix et que la ligne suivante ne contient pas livraison
        If InStr(1, .Cells(LigV, "A").Text, "€", 1) <> 0 And InStr(1, .Cells(LigV + 1, "A").Text, "livraison", 1) = 0 Then
            'on insère une ligne
            .Rows(LigV + 1).Insert Shift:=xlDown
        'End If
        ' si la ligne contient le mot "Expire" > suppression de la ligne
        If InStr(1, .Cells(LigV, "A").Text, "Expire", vbTextCompare) <> 0 Then .Rows(LigV).Delete
        End If
    Next
End With
End Sub

Bonjour

a tester

Sub lignesSP()
    Dim DerLigV As Long, LigV As Long
    With Sheets("Feuil1")
        DerLigV = .[A100000].End(xlUp).Row
        For LigV = DerLigV To 2 Step -1
            ' Si la ligne contient un prix et que la ligne suivante ne contient pas "livraison"
            If InStr(1, .Cells(LigV, "A").Text, "€", 1) <> 0 And InStr(1, .Cells(LigV + 1, "A").Text, "livraison", 1) = 0 Then
                ' Insérer une ligne
                .Rows(LigV + 1).Insert Shift:=xlDown
            End If

            ' Si la ligne contient le mot "Expire", suppression de la ligne
            If InStr(1, .Cells(LigV, "A").Text, "Expire", vbTextCompare) <> 0 Then
                .Rows(LigV).Delete
            End If
        Next LigV
    End With
End Sub

bonjour et merci Joco

En fait, le seul changement est l'ajout de "LigV" après le Next ?

Malheureusement, ça n'est pas efficace

Bonjour

Cette macro fonctionne bien avec Office 2021 je viens de faire un essai

Sub SupprimerLignesExpire()
    Dim LigV As Long
    Dim DerniereLigne As Long

    ' Déterminer la dernière ligne de la colonne A
    DerniereLigne = Cells(Rows.Count, "A").End(xlUp).Row

    ' Parcourir les lignes de bas en haut
    For LigV = DerniereLigne To 1 Step -1
        ' Si la cellule contient le mot "Expire"
        If InStr(1, Cells(LigV, "A").Text, "Expire", vbTextCompare) <> 0 Then
            ' Supprimer la ligne
            Rows(LigV).Delete
        End If
    Next LigV
End Sub

je suis un peu "vintage" j"utilise encore 2007 qui me suffit amplement

Cette macro fonctionne très bien avec 2007

OK, je regarde ça de plus près

Rechercher des sujets similaires à "supprimer ligne contient mot"