Supprimer des lignes sous condition

Bonjour à tous,

Lors de mes recherches pour supprimer des lignes sous conditions, je ne trouve que si la valeur est égale à zéro ou si la cellules est vide.

Pour ma part, Je souhaite faire un macro qui cherche à supprimer toutes les lignes si dans les cellules les valeurs se trouvant dans la colonne E sont inférieurs à 0.1

Est-ce que quelqu'un pourrait m'aider là dessus ? Sachant que je ne connais pas grand chose au VBA.

Merci d'avance.

Yetitaz

Bonjour,

Sans fichier essaie avec ce code

Sub test()
For Each cel In Range("E1:E" & Range("E" & Rows.Count).End(xlUp).Row)
If cel.Value < 0.1 Then Rows(cel.Row).EntireRow.Delete
Next
End Sub

Si ok, clique sur le v vert à coté du bouton EDITER pour cloturer le fil lors de réponse

Crdlt

Re

j'ai essayé ton code, il me supprime certaines lignes puis il tourne en rond. Je ne sais pas si il a fini car il a tourné pendant plus de 30 min donc j'ai arrêté car trop long.

Je t'envoie donc le fichier pour voir si il y a un problème.

Sache que j'ai d'autre fichier identique avec énormément plus de lignes.

Merci encore

Yetitaz

64supp-ligne.xlsm (257.87 Ko)

Bonjour,

un test avec un while que je trouve plus souple.

301supp-ligne.xlsm (275.66 Ko)

Re

Merci Guitouille, il fonctionne parfaitement avec le fichier que j'ai envoyé.

Cependant, lorsque que je l'utilise sur un fichier beaucoup plus lourd cette fois si sa ne fonctionne pas.

Je ne vois donc pas ce qui pose problème.

Si vous savez la raison merci de me le dire.

Un fichier avec plus de 32 767 lignes ?

J'ai un fichier où j'ai au moins 700 000 lignes, c'est le plus gros que j'ai en ce moment.

Ouf, du coup je sais d'où ça vient

la variable qui balaye les lignes et celle qui contient le nombre de lignes sont déclaré en Integer qui ne dépassent pas 32767, il faut donc les déclarer en type Long et là ça peut dérouler jusqu'à 2,147,483,647 lignes ^^

ce qui donne (juste la déclaration à changer)

Sub test()
Application.ScreenUpdating = False
Dim i, nbcells As Long
nbcells = ActiveSheet.Range("E65000").End(xlUp).Row
i = 2
While i <= nbcells And Cells(i, 5).Value <> ""
If Cells(i, 5).Value < 0.1 Then
Rows(i).Select
Selection.Delete
i = i - 1
End If
i = i + 1
Wend
Cells(1, 1).Select
End Sub

Merci énormément

Par contre dès que j'ai les très gros fichier, il refait comme je disais avec le code de Dan il tourne en rond.

Je ne sais pas comment pouvoir réglé se problème avec la grosseur de mes fichiers.

AAAAAAAAAaaaaahhhhhhhhhhhhhhhhhhhhh, je viens juste d'ouvrir les yeux sur une erreur,

à voir si ça règle la chose ou pas du tout m'enfin,

j'avais pas vraiment prévu un fichier de 700k lignes quand j'ai fais la macro, du coup il faut changer le

nbcells = ActiveSheet.Range("E65000").End(xlUp).Row

par

nbcells = ActiveSheet.Range("E"& rows.count).End(xlUp).Row

j'ai toujours le même problème mais avec une autre macro que j'utilise, je le fais sur une plus petite portion donc moins de problème pour la suite.

Sinon c'est exactement ce que je cherchais malgré le problème sur un gros fichier donc je ne sais pas si on peut dire que c'est résolu.

Merci à vous 2

Re,

Avec ton fichier et tes précisions apportées dans ton post, essaie avec ce code :

Sub test()
Dim dlg As Long
Application.ScreenUpdating = False
dlg = Range("E" & Rows.Count).End(xlUp).Row
For i = dlg To 2 Step -1
If Range("E" & i).Value < 0.1 Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

Mais bon vu le nombre de lignes cela prendra encore du temps

A te relire

Bonjour

Encore désolé pour répondre tard mais les deux macros fonctionnent pour moi facilement.

Donc encore merci à vous 2 pour votre aide

Rechercher des sujets similaires à "supprimer lignes condition"