Signaler

Supression de lignes selon condition [Résolu]

Posez votre question Leghe - Dernière réponse le 14 juin 2017 à 11:43 par Leghe
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 !
Afficher la suite 
Utile
+0
plus moins
Merci pour votre réponse.
Ca me donne une erreur 1004 à cet endroit-là :
If UCase(Cells(lig, 12)) = "PAS DE VPC" Then
Donnez votre avis
Utile
+0
plus moins
bonsoir, as-tu essayé d'exécuter ta macro pas à pas? c'est souvent très éclairant!
http://www.commentcamarche.net/contents/1381-debogage
Donnez votre avis
Utile
+0
plus moins
@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.
 
Donnez votre avis
Utile
+0
plus moins
Bonjour René,

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

Grand merci !
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !