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

AstridG -  
 AstridG -
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 :)

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. AstridG
       
      Merci beaucoup je vais essayer ça!
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. AstridG
       
      Merci Michel je vais essayer votre méthode!
      0