Boucle pour enlever les lignes dont la colonne B = 0

  • Initiateur de la discussion Initiateur de la discussion remy13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

remy13

XLDnaute Nouveau
Bonjour,

J´ai une liste importante de produits (presque 1 000 000 ref)

Pour chaque ref (colonne A) J´ai une quantité (colonne B).

Je souhaite supprimer les lignes pour lesquelles il y a 0 dans la colonne B.

Normalement je peux le faire manuellement en utilisant le filtre, mais avec 1 000 000 de lignes, c´est trop pour l´ordinateur, il ne peut pas copier autant.

PJ: echantillon du fichier

Quelqu´un peut-il m´indiquer la boucle svp ?

Cdlt,

Remy
 

Pièces jointes

Re : Boucle pour enlever les lignes dont la colonne B = 0

Bonjour Remy,

avec ce code:
Code:
Sub Effacer()
For i = Range("B1048576").End(xlUp).Row To 1 Step -1
If Cells(i, 2) = 0 Then Rows(i).Delete
Next i
End Sub

à+
Philippe
 
Re : Boucle pour enlever les lignes dont la colonne B = 0

Bonjour remy13
Avec ceci, mais sur 1 000 000 de lignes, tu as le temps de boire un café 😀
VB:
Sub SupprimeLignes()
Dim i&
Application.ScreenUpdating = False
With Sheets("Sheet1")
    For i = .Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
        If .Cells(i, 2).Value = 0 Then .Rows(i).Delete
    Next i
    .UsedRange
End With
End Sub
Cordialement

EDIT Bonjour Philippe,
EDIT2 Bonjour Victor21, trop discret je ne t'avais pas vu Désolé 🙂
 
Dernière édition:
Re : Boucle pour enlever les lignes dont la colonne B = 0

bonjour tous 🙂🙂🙂🙂


un exemple avec un tablo vu que l'on connait pas le nombres de colonne

mais bon ...... dans tout les cas ca va être long si beaucoup de colonnes & pas beaucoup de cells avec 0

Code:
Sub es()
Dim t(), t1(), x As Long, i As Long, y As Long, c As Long, r As Long
  c = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
  r = Cells.Find("*", , , , xlByRows, xlPrevious).Row
  t = Cells(1, 1).Resize(r, c).Value
  ReDim t1(1 To UBound(t), 1 To c)
  For i = 1 To UBound(t)
  If t(i, 2) <> 0 Then
  x = x + 1
  For y = 1 To c: t1(x, y) = t(i, y): Next y
  End If
  Next i
  Cells(1, 1).Resize(r, c).ClearContents
  [A1].Resize(x, c) = t1
End Sub

petite modif
autrement si la chronoligie pas d'importance
on pourrait mettre dans l'ordre descendant par apport a b2 donc les 0 a la fin
puis supprimer la plage avec les 0... facile a construire

en attendant!!!!
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour