Supprimer des lignes dont la colonne O contiennent "annulé"

Bonjour à tous,

Je ne parviens pas à effectuer cette manoeuvre, étant tout à fait novice en VBA

En effet je voudrais arriver à supprimer les lignes dont la colonne O contient "annulé", j'ai essayé plusieurs choses glanées sur les forums mais je n'y parviens pas

Pouvez vous m'aider?

Avec celle ci je suis parvenue à un résultat, mais l'inverse de celui recherché (ça m'a supprimé tout sauf les "annulés)

Sub supprimme_annule()
With Range(Range("O1"), Range("O5000").End(xlUp))
        .AutoFilter Field:=1, Criteria1:="=annulé"
        .SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub

Merci d'avance à tous

Bonsoir,

Sub supprimme_annule()
Dim DERLIGNE As Long
DERLIGNE = Range("O65536").End(xlUp).Row
For i = 1 To DERLIGNE
If Cells(i, 15).Value = "annulé" Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
End Sub

Salut Lorence,
Salut Xmenpl,

un double-clic sur la feuille démarre la macro...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
Application.ScreenUpdating = False
'
With Range("O1:O" & Range("O" & Rows.Count).End(xlUp).Row)
    .Replace what:="annulé", replacement:=""
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlUp
End With
'
Application.ScreenUpdating = True
'
End Sub

@Xmenpl : depuis le temps que ce problème revient sur le tapis, je m'étonne que tu tombes encore dans le piège d'une boucle 1 TO End !!
C'est l'inverse : End to 1 step -1...

10lorence.xlsm (13.53 Ko)


Joyeuses Fêtes !

A+

Bonjour à tous,

@Curulis57, je vois bien l'idée d'éviter la boucle, qui est toujours cool, le filtrage, qui est cool aussi. Le souci ici c'est que si des cellules sont vides dans la colonne O, la ligne entière est supprimée quand même.

Lorence parlait aussi de cellule qui contient annulé. À voir ce qui est entendu par "contient".

Ca serait intéressant de trouver une solution un peu plus universelle sur ton principe, qui tiendrait compte des cellules potentiellement vides, et de la possibilité de contenir le mot et non pas d'être strictement égal à ça.
Un remplacement des "annulé" par "ZZZZZZ" et des recherches avec like ?

Salut JoyeuxNoël,

j'y ai bien pensé aussi mais, en l'absence de fichier et d'autres indications, il faut bien commencer par quelque part !

Pas eu de surcharge de boulot avec ton pseudo, ces temps-ci ?


A+

En tout cas je suis tout ceci de près, j'en ai marre de passer mon temps à filtrer pour que dalle

Pas eu de surcharge de boulot avec ton pseudo, ces temps-ci ?

Non ça va. J'ai été super absent ces derniers jours. Du coup je suis passé à travers tout ça. Dommage. Vivement l'an prochain

Bonjour Curulis, JoyeuxNoel et Lorence.

Effectivement je n'avais pas pensé au décalage dans la boucle qui allait planter. j'aurai du tester avant

Je corrige sur la base de ton exemple supprime uniquement les lignes qui contiennent "annulé": ( ne fait rien si vide)

Voilà je boucle quand même et pas je boude quand même

Sub supprimme_annule()
Dim DERLIGNE As Long
DERLIGNE = Range("O65536").End(xlUp).Row
For i = 2 To DERLIGNE
If Cells(i, 15).Value = "annulé" Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
i = i - 1
End If
Next i
End Sub
8lorencebis.xlsm (17.19 Ko)
Rechercher des sujets similaires à "supprimer lignes colonne contiennent annule"