IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Suppression de ligne sous condition [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut Suppression de ligne sous condition
    Bonjour,

    Je cherche à supprimer les lignes de mon tableau si la valeur des cellules d'une colonne est égale à zéro.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Range("D1").Select
    Range(Selection, Selection.End(xlDown)).Select
    For Each rcel In Selection
        If rcel.Value = 0 Then
           rcel.EntireRow.Delete
        End If
    Next rcel

    Il fonctionne, mais pas entièrement. Je dois le relancer plusieurs fois pour qu'il supprime toutes les lignes où il y a un zéro dans la colonne D.
    Il semblerait que s'il y a 2 zéro de suite (i.e. dans 2 lignes), il ne supprime qu'une ligne sur les deux et je dois relancer le script 2 fois...
    S'il y a 3 zéro de suite (i.e. dans 3 lignes), je dois relancer le code 3 fois...
    Etc etc...

    Et la solution à ce problème reste un mystère pour moi.
    Quelqu'un saurait-il d'où cela peut provenir?

    Merci!

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Pour effectuer cette suppression de lignes, tu dois partir de la fin de liste et "remonter" jusqu'à la première ligne pour que l'incrémentation fonctionne correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Sub Test()
    Dim DerLig As Long, i As Long
        With Worksheets("Feuil1") 'Nom de feuille à adapter
            DerLig = .Range("D" & .Rows.Count).End(xlUp).Row
            For i = DerLig To 1 Step -1
                If .Range("D" & i) = 0 Then Rows(i).Delete
            Next i
        End With
    End Sub
    Cordialement.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Merci beaucoup, ça marche nickel !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression des lignes sous conditions
    Par e08b753z dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2012, 18h28
  2. Suppression de lignes sous conditions
    Par dadou42 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2010, 16h23
  3. Echec de suppression de ligne sous condition
    Par didyvine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2009, 23h56
  4. Suppression de lignes sous conditions
    Par juniorglobal08 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/10/2008, 21h15
  5. Suppression des lignes sous condition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo