Supprimer ligne particulière

Résolu
dikold Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
dikold Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrais que mon code supprime les lignes où les cellules en colonne A ne commence pas par des lettres précises. Mais ce ne marche pas :

Dim c As Range

Lastrow = Cells(Rows.Count, "A").End(xlUp).Row

For Each c In Range("A2:A" & Lastrow)
    If Not (c.Value Like "CO*" Or c.Value Like "EN*" Or c.Value Like "J*" Or c.Value Like "PI*" Or c.Value Like "SO*") Then
        c.EntireRow.Delete
    End If
Next


Merci d'avance de votre aide.

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,
    Lorsqu'on fait des suppressions de lignes en vba (dans une boucle).. il est préférable de commencer par le bas du tableau (car lorsqu'on supprime une ligne.. toutes les lignes en dessous remontent.. et donc.. ta boucle n'est plus valable...)

    Essayes comme ceci :
    Dim valCell as Variant
    Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    
    For l = Lastrow to 2 step -1
     valCell  = range("A" & l).value
        If Not (valCell Like "CO*" Or valCell Like "EN*" Or valCell Like "J*" Or valCell Like "PI*" Or valCell Like "SO*") Then
            c.EntireRow.Delete
        End If
    Next
    
    

    1
    1. dikold Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
       
      Merci de ta réponse mais ça ne marche pas :

      Erreur d'execution '424' à la ligne c.EntireRow.Delete
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > dikold Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
         
        oups .. petit oubli de ma part désolé.
        Dim valCell as Variant
        Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
        
        For l = Lastrow to 2 step -1
         valCell  = range("A" & l).value
            If Not (valCell Like "CO*" Or valCell Like "EN*" Or valCell Like "J*" Or valCell Like "PI*" Or valCell Like "SO*") Then
               rows(l).Delete
            End If
        Next
        
        0
    2. dikold Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
       
      Super, ca marche merci :)
      0