Suppression de ligne sous condition de cellule

Bonjour

Je viens chercher un peu d'aide n'arrivant pas à mettre en place la macro souhaitée. J'ai une feuille "GLO" dans un classeur. Dans cette feuille, j'ai une liste de clients à partir de la ligne 8 (de la 1 à la 7 ce sont les en tête qui ne doivent pas bouger).

Dans la colonne 52 (colonne DX) j'ai une valeur qui varie selon chaque ligne. J'aimerais que la macro vérifie pour chaque ligne si la valeur de la cellule est "GLO" et si ce n'est pas le cas, qu'elle supprime la ligne entière. Par exemple si sur la ligne 10, la valeur de la colonne DX est "TMP", la ligne 10 est supprimée.

En cherchant j'ai trouvé le code suivant que j'ai essayé d'adapter mais cela ne fonctionne pas

Sub FiltreGLO()
    Dim n%, i%
    With Worksheets("GLO")
        Application.ScreenUpdating = False
        n = .Cells(.Rows.Count, 52).End(xlUp).Row
        For i = 8 To n
            If Not .Cells(i, 52) Like "GLO" Then .Cells(i, 52).ClearContents
        Next i
        .Range("A8:A" & n).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
End Sub

D'avance merci pour votre aide

Bonjour,

Sans macro, la manip' est réalisable en 2 clics : on filtre les lignes "GLO" puis on les supprime...
Concernant la macro, un essai :

Sub FiltreGLO()
    Dim n%, i%
    With Worksheets("GLO")
        Application.ScreenUpdating = False
        n = .Cells(.Rows.Count, 52).End(xlUp).Row
        For i = n To 8 Step -1 'Il faut partir de la fin, car la suppression change le nombre de lignes
            If Not .Cells(i, 52) = "GLO" Then .Rows(i).Delete
        Next i
    End With
End Sub

Merci Pedro, mais cela ne fonctionne pas. J'ai suivi ton conseil et enregistré une macro en utilisant le filtre, ça semble fonctionner

Merci Pedro, mais cela ne fonctionne pas. J'ai suivi ton conseil et enregistré une macro en utilisant le filtre, ça semble fonctionner

Qu'est ce qui ne fonctionne pas exactement ? Tu as un message d'erreur à l’exécution ? Les lignes ne sont pas supprimées ?

Attention, le code produit par l'enregistreur est bien souvent à retravailler pour être utilisable dans la durée...

S'il te faut davantage de précisions, merci de joindre un fichier type. Sinon, pense à valider le sujet pour indiquer qu'il est résolu !

Bonjour

sélectionne

21supprime-ligne.xlsm (14.92 Ko)

la feuille et la colonne H ou celle qui contient tes critères et exécute la macro supp

@Pedro : je n'ai pas vu d'action sur l'application de la macro (pas de ligne supprimée)

la macro suite enregistrement n'est pas très "propre" mais semble fonctionner EDIT : en fait ça me bousille toutes les formules qui sont dans des colonnes même sur les lignes qui restent (j'ai des NB.SI par exemple).

Sub FiltrageGLO()
'

    Sheets("GLO").Select
    Range("DX7").Select
    Selection.AutoFilter
    ActiveWindow.LargeScroll ToRight:=-5
    ActiveSheet.Range("$B$5:$EH$2006").AutoFilter Field:=127, Criteria1:=Array( _
        "TMP", "GUI", "Suivi CLient.", "VEN", "Sans adresse", "SUI", "="), _
        Operator:=xlFilterValues
    Rows("8:2006").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$B$5:$EH$39").AutoFilter Field:=127
    ActiveWindow.ScrollRow = 1968
    ActiveWindow.ScrollRow = 1964
    ActiveWindow.ScrollRow = 1406
    ActiveWindow.ScrollRow = 1168
    ActiveWindow.ScrollRow = 332
    ActiveWindow.ScrollRow = 122
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollColumn = 126
    ActiveWindow.ScrollColumn = 128
    ActiveWindow.ScrollColumn = 126
    ActiveWindow.ScrollColumn = 67
    ActiveWindow.ScrollColumn = 60
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 52
    ActiveWindow.ScrollColumn = 12
End Sub

@gullaud

Merci. Mais je ne vois pas comment fonctionne ta macro (?) car même en exécutant je n'ai rien

En tous cas merci à tous les deux pour votre aide

Bon j'ai finalement réussi avec ActiveSheet.Range("$A2:$BH2000").AutoFilter Field:=52, Criteria1:="GLO"

merci

Rechercher des sujets similaires à "suppression ligne condition"