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...) :
Pourquoi ?
Merci !
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
-
Merci pour votre réponse.
Ca me donne une erreur 1004 à cet endroit-là :
If UCase(Cells(lig, 12)) = "PAS DE VPC" Then -
Contributeurbonsoir, as-tu essayé d'exécuter ta macro pas à pas? c'est souvent très éclairant!
https://www.commentcamarche.net/contents/1381-debogage -
@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.
-
Bonjour René,
Votre code fonctionne à merveille, je passe le sujet en résolu.
Grand merci !