Supprimer lignes avec toutes cellules = 0

Résolu/Fermé
JML0858 - 4 août 2010 à 11:56
 JML0858 - 5 août 2010 à 09:52
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

Krysstof
Messages postés
1483
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 août 2010
289
4 août 2010 à 12:07
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
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.
0
Krysstof
Messages postés
1483
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
23 août 2010
289
4 août 2010 à 13:07
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.
0
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 194
Modifié par lermite222 le 4/08/2010 à 22:11
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)
0
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.
0