Suppression des lignes dont le stock est à 0

Bonjour à toutes et à tous,

Je sais qu'il y a déjà des sujets similaires à la question que je vais poser, mais je n'arrive pas à appliquer ça dans mon fichier.

Dans le fichier joint, je cherche à faire une macro qui va venir supprimer les lignes dont la quantité en stock est à 0. Ce n'est qu'un fichier pour exemple, car mon véritable fichier (professionnel donc confidentiel) contient quelques colonnes en plus, et environ 10000 lignes.

Auriez-vous quelque-chose à me proposer ?

Merci

Bonjour

Pourquoi du VBA ,il te suffit de te servir de la fonction filtre en colonne D et tu décoches le 0

Crdlt

Hello,

Ou à la limite tu fais un TCD et filtre sur les valeurs <> 0 ^^

@+

Bonsoir le forum, binome18, Joco7915,

A tester en VBA

Cordialement.

Édit: Bonsoir BAROUTE78,

Bonjour

Vous pouvez essayez aussi ceci qui sera plus rapide je pense

Sub Macro1()
Dim plage As Range

With ActiveSheet.ListObjects("Tableau1")
    .Range.AutoFilter Field:=4, Criteria1:="0"
    On Error Resume Next
    Set plage = .DataBodyRange.SpecialCells(xlCellTypeVisible, xlNumbers)
    If Err.Number > 0 Then Exit Sub
    plage.SpecialCells(xlCellTypeVisible).Delete
End With
End Sub

si ok -->

Cordialement

Merci pour vos réponses, mais j'ai des questions...

La solution de mdo100 fonctionne très bien, mais pourquoi dites-vous, Dan, qu'il y a plus rapide ?

Lors de l'exécution de la macro proposée par Dan, j'ai un message qui me demande si je veux supprimer les lignes entières. Si je choisis "oui", je me retrouve avec mon tableau qui n'affiche rien (toutes les cases du filtre de la colonne Qté stock sont décochées), mais les lignes à 0 ont bien été supprimées. Si je choisis non, aucune ligne n'est supprimée. De plus, pourquoi cette proposition serait plus rapide que celle de mdo100. Quelle différence de temps peut-il y avoir sur un tableau de 10000 lignes ?

Merci

La solution de mdo100 fonctionne très bien, mais pourquoi dites-vous, Dan, qu'il y a plus rapide ?

Bien sûr qu'elle fonctionne mais par défaut utiliser une boucle peut s'avérer être plus lent surtout si vous parcourez toutes lignes. Cela dépend donc du nombre de lignes à traiter dans votre tableau. Si vous en avez 1000 ou 10000 cela n'est pas la même chose. Comme je vous ai écrit c'est à vérifier.

j'ai un message qui me demande si je veux supprimer les lignes entières.

Essayez avec celui-ci où j'ai ajouté deux instructions pour vous éviter le message

Sub Macro1()
Dim plage As Range

With ActiveSheet.ListObjects("Tableau1")
    .Range.AutoFilter Field:=4, Criteria1:="0"
    On Error Resume Next
    Set plage = .DataBodyRange.SpecialCells(xlCellTypeVisible, xlNumbers)
    If Err.Number > 0 Then Exit Sub
    Application.DisplayAlerts = False
    plage.SpecialCells(xlCellTypeVisible).Delete
    .Range.AutoFilter Field:=4
End With
Application.DisplayAlerts = True
End Sub

Quelle différence de temps peut-il y avoir sur un tableau de 10000 lignes ?

Vous pouvez placer un timer au début du code et une Msgbox à la fin. Cela vous donnera le temps réalisé pour effectuer les opérations dans votre tableau.

Sub Macro1()
Dim plage As Range
Start = Timer
'with ....
.....
MsgBox "durée du traitement: " & Timer - Start & " secondes"
End sub

Crdlt

Merci pour vos réponses, me voilà éclairé.

Le code fonctionne bien, et correspond à mon besoin.

Merci beaucoup de votre aide.

Je me permets de vous solliciter de nouveau pour mon tableau.

Quelles seraient les modifications à apporter à ce code VBA pour supprimer les lignes dont les cellules de la colonne stock sont vides (et laisser les lignes dont le stock est à 0) ? Il y a uniquement le critère (Criteria1:="0") à changer ?

Merci

Bonjour

Quelles seraient les modifications à apporter à ce code VBA pour supprimer les lignes dont les cellules de la colonne stock sont vides (et laisser les lignes dont le stock est à 0) ? Il y a uniquement le critère (Criteria1:="0") à changer ?

Il vous suffit de supprimer le 0 et de laisser uniquement Criteria1:=""

Parfait !

Tout fonctionne bien

Merci beaucoup pour votre aide.

Rechercher des sujets similaires à "suppression lignes stock"