Macro Suppression conditionnelle

Bonjour,

Je cherche une macro particuliere : J'aimerai supprimer toutes les lignes de mon tableau,
qui ont dans la colonne C le chiffre 2.
J'ai regardé un peu les réponses déjà existantes mais rien de concret pour moi :-(

Merci.

3 réponses

  1. Bonjour,

    Dim cel
    Dim plage As Range
    Dim lig As Long
    
        Set plage = Worksheets(1).Range("C:C")
        
        For Each cel In plage
            If cel.Value = 2 Then
                lig = cel.Row
                Rows(lig).Delete
            End If
        Next cel
    


    Je n'ai pas testé mais ça devrait le faire.

    ;o)
    0
    1. Arf, ça ne marche, j'ai dpu passer à côté de qq chose :

      Sub SuppLigne2()
      Dim plage As Range
      Dim lig As Long

      Set plage = Worksheets(1).Range("C:C")

      For Each cel In plage
      If cel.Value = 2 Then
      lig = cel.Row
      Rows(lig).Delete
      End If
      Next cel
      End If
      End Sub
      0
      1. Ici il y a un End If de trop ... juste après Next Cel

        Ensuite, tes cellules de la colonne C sont-elles bien numérique ?

        Chez moi ça fonctionne.
        0
    2. J'ai trouvé un début de réponse, peux-tu m'aider à finir ?
      Voici la macro qui fonctionne pour la feuille 1 :
      Sub suppr_ligne_non_Colonne_C()
      Dim i As Integer, derniereligne As Integer
      derniereligne = Range("C65536").End(xlUp).Row
      For i = derniereligne To 1 Step -1
      If Cells(i, 3).Value = "1" Then
      Rows(i).Delete
      End If
      Next
      End Sub

      A présent, j'aimerai qu'elle supprime la ligne sur tous le classeur (par ex, si je supprime la ligne 4, ca supprime la ligne 4 des autres feuilles 2 et 3 du classeur)

      Je pensais faire comme ça :

      Sub suppr_ligne_non_Colonne_C()
      Dim i As Integer, derniereligne As Integer
      derniereligne = Range("C65536").End(xlUp).Row
      For i = derniereligne To 1 Step -1
      If Cells(i, 3).Value = "1" Then
      Rows(i).Delete
      Sheets("Feuille2").Rows(lig).Delete
      Sheets("Feuille3").Rows(lig).Delete
      End If
      Next
      End Sub

      mais ça a buggé./............
      0
      1. celle là fonctionne aussi chez moi :

        Sub suppr_ligne_non_Colonne_C()
        Dim i As Integer
        Dim derniereligne As Integer
        Dim ws1 As Worksheet
        Dim ws2 As Worksheet
        Dim ws3 As Worksheet
        
            Set ws1 = Worksheets(1)
            Set ws2 = Worksheets(2)
            Set ws3 = Worksheets(3)
            
            derniereligne = ws1.Range("C65536").End(xlUp).Row
            For i = derniereligne To 1 Step -1
                If ws1.Cells(i, 3).Value = "1" Then
                    ws1.Rows(i).Delete
                    ws2.Rows(i).Delete
                    ws3.Rows(i).Delete
                End If
            Next i
            
            Set ws1 = Nothing
            Set ws2 = Nothing
            Set ws3 = Nothing
            
        End Sub
        


        ;o)
        0