Supprimer lignes avec toutes cellules = 0

Résolu
JML0858 -  
 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

  1. Krysstof Messages postés 1659 Statut Membre 295
     
    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
  2. JML0858
     
    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
  3. Krysstof Messages postés 1659 Statut Membre 295
     
    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
  4. JML0858
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  7. JML0858
     
    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