Supprimer lignes avec toutes cellules = 0
Résolu
JML0858
-
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.
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.
A voir également:
- Supprimer lignes avec toutes cellules = 0
- Supprimer rond bleu whatsapp - Guide
- Supprimer page word - Guide
- Supprimer pub youtube - Accueil - Streaming
- Fichier impossible à supprimer - Guide
- Supprimer compte instagram - Guide
6 réponses
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.
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
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.
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.
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.
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Peut-être avec...
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)
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.
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.