Supression de lignes selon condition

Résolu
Bonjour,

Dans un fichier d'export de stock, je voudrais supprimer les lignes dont la catégorie (colonne L) est "PAS DE VPC"

Voici mon code qui ne fonctionne pas (rien n'est fait...) :

Sub Macro1()
Dim I As Long
Dim CATEGORIE As Range
Set CATEGORIE = Range("L2:L" & Range("L2").End(xlDown).Row)
For I = CATEGORIE.Cells.Count To 1 Step -1
If UCase(CATEGORIE.Cells(I).Value) Like "PAS DE VPC" Then
CATEGORIE.Cells(I).EntireRow.Delete
End If
Next
End Sub


Pourquoi ?
Merci !

4 réponses

  1. Merci pour votre réponse.
    Ca me donne une erreur 1004 à cet endroit-là :
    If UCase(Cells(lig, 12)) = "PAS DE VPC" Then
    0
    1. Contributeur
      bonsoir, as-tu essayé d'exécuter ta macro pas à pas? c'est souvent très éclairant!
      https://www.commentcamarche.net/contents/1381-debogage
      0
      1. @Leghe

        Rebonjour,

        Tu as dû avoir cette erreur 1004 car j'avais fait une petite erreur ;
        essaye maintenant avec ce nouveau code :

        
        Option Explicit
        
        Sub Macro1()
          Dim dlig As Long, lig As Long
          dlig = Range("L" & Rows.Count).End(xlUp).Row
          For lig = dlig To 2 Step -1
            If UCase(Cells(lig, 12)) = "PAS DE VPC" Then Rows(lig).Delete
          Next lig
        End Sub
        
        

        dlig : dernière ligne de ton tableau ; 1ère ligne : la ligne 2 ;
        Cells(lig, 12) : 12 => colonne L ; lignes lig : dlig à 2

        J'ai vérifié que UCase([L5]) marche même si [L5] est vide :
        c'est le cas, ça passe sans provoquer d'erreur.

        En principe, il ne devrait plus y avoir d'erreur 1004 !
        Si elle se reproduit quand même, essaye avec :

            If UCase(Cells(lig, 12).Value) = "PAS DE VPC" Then Rows(lig).Delete
        

        À te lire pour avoir ton avis.

        --------------------------------------

        Par rapport à mon précédent message (que j'ai supprimé),
        j'ai laissé la suite du texte inchangée.

        Si ta catégorie en colonne L peut être "PAS DE VPC" sans rien après,
        inutile d'utiliser Like !

        Si tu as des cellules qui commencent par "pas de vpc", donc avec
        une suite, tel que : "pas de vpc de type 1", alors oui, là tu dois
        utiliser Like, et la ligne #8 devient :

            If UCase(Cells(lig, 12)) Like "PAS DE VPC*" Then Rows(lig).Delete
        

        N'oublie pas le caractère " * " : c'est un caractère joker qui signifie
        « tous les caractères ».

        Si des caractères peuvent aussi être devant "pas de vpc" :

            If UCase(Cells(lig, 12)) Like "*PAS DE VPC*" Then Rows(lig).Delete
        

        Merci de me dire si ça te convient.
         
        0
        1. Bonjour René,

          Votre code fonctionne à merveille, je passe le sujet en résolu.

          Grand merci !
          0