Macro Suppression conditionnelle

laptitepero Messages postés 19 Statut Membre -  
Polux31 Messages postés 7219 Statut Membre -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  2. laptitepero Messages postés 19 Statut Membre
     
    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. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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
  3. laptitepero Messages postés 19 Statut Membre
     
    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. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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