Excel - Macro - Supprimer ligne si G = "NON"

Fermé
AstridG - 20 avril 2018 à 16:22
 AstridG - 22 avril 2018 à 14:29
Bonjour à tous,

J'ai vu plusieurs discutions sur le sujet et la réponse à l'air évidente, mais je ne trouve pour autant pas la solution à mon problème...

J'ai crée un fichier excel et je voudrait supprimer toutes les lignes dont la colonnes G= "NON", je n'arrive pas à programmer la macro... Pouvez vous m'aider ?

En vous remerciant par avance :)


A voir également:

2 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
22 avril 2018 à 08:34
Bonjour,

Sub Supp_lig_NON_G()
    Dim Col_G As Range
    Dim NL As Long, Derlig As Long, lig As Long, NBre As Long
    Dim Mot As String
    
    On Error GoTo fin
    
    Application.ScreenUpdating = False

    With Worksheets("feuil1")       'nom de feuille a adapter
        Derlig = .Columns("G").Find("*", , , , , xlPrevious).Row        'derniere cellule non vide colonne G
        Mot = "NON"
        'Definition Plage de cellule pour recherche occurences dans SubRoutine reporter
        Set Col_G = .Range("G1:G" & Derlig)
    
        'nombre d'occurence
        NBre = Application.CountIf(Col_G, Mot)
        If NBre > 0 Then    'si au moins 1
            'boucle de recherche
            For NL = 1 To NBre
                lig = 1
                'lookat:=xlWhole valeur exacte
                'lookat:=xlPart valeur contenue dans la cellule, ou la feuille par défaut
                lig = .Columns("G").Find(Mot, .Cells(lig, "G"), , lookat:=xlWhole).Row
                'Effacement ligne
                .Rows(lig).Delete
            Next NL
        End If
    End With
    Set Col_G = Nothing
fin:
    Application.ScreenUpdating = True
End Sub
0
Merci beaucoup je vais essayer ça!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 22 avril 2018 à 12:32
Bonjour

autre méthode par récursivité..

Option Explicit
'-------------
Sub vvv()
Dim Mot As String, Lig As Long

Application.ScreenUpdating = False
On Error GoTo fin
Mot = "NON"
Lig = Columns("G").Find(what:=Mot, lookat:=xlWhole).Row
Rows(Lig).Delete
Call vvv
fin:
MsgBox "suppression du mot " & "Mot" & " terminée"
End Sub



0
Merci Michel je vais essayer votre méthode!
0