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. Bonjour René,

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

    Grand merci !
    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. 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. Merci pour votre réponse.
          Ca me donne une erreur 1004 à cet endroit-là :
          If UCase(Cells(lig, 12)) = "PAS DE VPC" Then
          0