Supprimer lignes avec toutes cellules = 0 [Résolu/Fermé]

Signaler
-
 JML0858 -
Bonjour,

Je souhaiterai savoir comment supprimer avec une macro VBA toutes les lignes d'un classeur très volumineux (> 1500 lignes) qui ont toutes leurs cellules complétées par la valeur 0.
Merci d'avance.

6 réponses

Messages postés
1483
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 août 2010
278
salut

tu fais une macro avec le bout de code suivant, cela devrait marcher

attention : il faut qu'il y ait des vrai 0, pas des cellules vides.
de plus je pars du principe que la colonne 1 est toujours remplie, cela s'arrete a la premiere ligne ou la cellule A est vide.

Dim i As Integer
i = 1
While Not IsEmpty(Cells(i, 1))
  Dim asupprimer As Boolean
  asupprimer = True
  Dim j As Integer
  j = 1
  While asupprimer And Not IsEmpty(Cells(i, j))
    asupprimer = (Cells(i, j).Value = 0)
    j = j + 4
  Wend
  If asupprimer Then
     Cells(i, 1).EntireRow.Delete
  Else
    i = i + 1
  End If
Wend
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Bonjour et merci beaucoup pour ton aide.

J'ai néanmoins un petit souci car mes données numériques ne commencent qu'à la ligne (B9:G9) pour se terminer à la ligne (B1873:G1873).

Mais la macro fonctionne lorsque je ramène le début de les données dans la cellule A1.

Il faut juste que je réussisse à adapter ta macro.
Messages postés
1483
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 août 2010
278
tu remplaces
i = 1 par i=9
j = 1 par j=2

ensuite pour te limiter de B à G

While asupprimer And Not IsEmpty(Cells(i, j)) And j <= 7

si tu peux éviter de limiter à la ligne 1873 tu touche a rien d'autre

sinon tu rajoute AND i <= 1873 dans le premier while.
Merci beaucoup, ça fonctionne très bien et je n'aurai jamais réussi à m'en sortir seul.

Je me permets encore de solliciter ton expertise. Dans ce même fichier, j'ai des lignes à valeurs 0, seules et dispersées dans le tableur.

J'en ai d'autres, toujours à valeurs 0, mais qui sont successives et groupées en 16 lignes d'affilées à chaque fois.

Pour toi, existe-t-il une technique pour ne supprimer que ces groupes de 16 lignes à valeurs 0 qui apparaissent plusieurs fois et conserver les autres lignes à valeurs 0 isolées dans le tableur ?
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 167
Bonjour,
Peut-être avec...
Sub SuppLigne()
Dim Lig As Long, Col As Integer
Dim Compter As Integer
    For Lig = 1873 To 9 Step -1
        For Col = 2 To 7
            If Cells(Lig, Col) <> 0 Then Exit For
        Next Col
        If Col = 8 Then Compter = Compter + 1 Else Compter = 0
        If Compter = 16 Then
            Rows(Lig & ":" & Lig + 15).Delete
            Compter = 0
        End If
    Next Lig
End Sub


A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Un grand merci car cela fonctionne impeccablement.

Dans tous les cas, tous mes sincères remerciements à vous deux (Krisstof et lermite222) pour avoir pris de votre temps à me dépanner.

Grâce à vous deux, je vais gagner un temps énorme sur ces fichiers professionnels.

Et bravo pour votre perspicacité et la rapidité à trouver la solution.

Très cordialement.