Suppression ligne d'une cellule vide ou égale à 0 en VBA

Bonjour a toutes et a tous,

En faite j'ai un tableau a saisir toutes les nuits , il comporte:

-trois colonnes : x, y, z

x= numeros de 151 A 293 (valeurs fixes)

y=des lettres (en cas de vente)ou 0 (si j'ai un problem) ou vides (quand y a pas de vente) ce que je doit saisir toutes les nuits.

z=des chiffres de 0 a 4( je dois les saisir aussi)

-77 lignes qui correspondent aux produits vendus (x)

dans la premiere feuille je dois saisir les ventes, dans la deuxieme feuille je souhaite avoir un resultat qui peut me supprimer toutes les lignes des cellules de la colonne y qui sont vides (pas de ventes) ou qui ont une valeur egal a 0.

sachant que je dois remplir ce tableau toutes les nuits je souhaite aussi cliquer sur un bouton pour que le resultat soit mis a jour apres le saisie des infos ou en cas de modification.

j'ai joins le fichier avec l'exemple chiffré sans vba

169ve.xls (18.00 Ko)

*En vous remerciant d'avance pour votre aide

Bonjour et bienvenue

Je n'ai pas réussi à supprimer les lignes ; elles sont donc masquées.

161copie-de-ve-1.zip (16.37 Ko)

Si quelqu'un peut me dire pourquoi

If Cells(i, 2).Value = 0 Then Rows(i).Hidden = True fonctionne et pas

If Cells(i, 2).Value = 0 Then Rows(i).Delete

Amicalement

Nad

Bonjour,

Voila une solution qui te copie uniquement les lignes qui t'intéressent sur la 2e feuille :

Sub supprLignes()

    Const NB_LIGNES = 30 'nb de lignes à prendre en compte

    Worksheets("RESULTAT").Columns("A:C").ClearContents

    No_Ligne2 = 3

    For No_Ligne = 3 To NB_LIGNES + 2
        If Cells(No_Ligne, 2) <> "" And Cells(No_Ligne, 2) <> 0 Then
            Worksheets("RESULTAT").Cells(No_Ligne2, 1) = Cells(No_Ligne, 1)
            Worksheets("RESULTAT").Cells(No_Ligne2, 2) = Cells(No_Ligne, 2)
            Worksheets("RESULTAT").Cells(No_Ligne2, 3) = Cells(No_Ligne, 3)
            No_Ligne2 = No_Ligne2 + 1
        End If
    Next

    MsgBox "Copie effectuée"

End Sub

Si tu as 77 lignes sur ta feuille, modifie NB_LIGNES ...

Et le fichier qui va avec :

Cordialement,

Bonjour à tous,

Nad,

Quand on supprime des lignes, il faut partir du bas et remonter

        For i = lg To 3 Step -1
            If Cells(i, 2).Value = 0 Then Rows(i).Delete
        Next i

ici, un filtre aurait été + rapide (pas de boucle)

Amicalement

Claude

édit: pas vu passé Sebastien ! salut

Re

Merci Claude.

Amicalement

Nad

re,

Solution filtre

Sub filtreVides()
    Range("a2:c" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    Range("k1:k2"), CopyToRange:=Sheets("RESULTAT").Range("a2:c2"), Unique:=False
End Sub

Amicalement

Claude

279asmol-supprvides.zip (13.17 Ko)

Bonjour tout le monde,

Merci a vous tous c'est super, c'est excatement ce que je cherchait,ca m'eviterais de faire n'importe quoi a 3h du matin.

un grand merci SEBASTIEN pour le mot d'acceuil, ainsi que NAD et DUBOIS.......

a bientot

"l'homme le plus heureux est celui qui fait le bonheur d'un plus grand nombre d'autres."

Bonjour,

j'ai un petit problème avec mon programme en VBA que j'arrive pas a trouver la solution (je suis déboutant) mon soucis c'est de supprimer toutes les cellule qui sont a 0 de 3 colonnes (AE,AF,et AG) mais a partir de la ligne 9 a la 1094 et sa sur 6 feuille de calcul.

je ne sais pas si je vous donne toute l'information nécessaire dans ce cas je vous dirais d'avantage.

PS: mon soucis n'est pas de passer d'une feuille de calcul a une autre mais de supprimer le contenue des cellules qui sont a 0!

Merci d'avance a touts!

Bonjour nicolaz18,

Tu devrais ouvrir un poste,

en joignant un bout de fichier, tu auras des réponses

Ce fil est résolu pour l'auteur

Amicalement

Claude

Merci a toi, j'ai reusi a résoudre mon problème, j'ai bidouille une fonction c'est pas très beau ni très optimise mais sa fera l'affaire! voila mon code si qualqun est interese.

Sub clear_cells()
 'Supprime les cellules avec une date nulle

 For i = 1 To nbRegion
 region = correspondanceOnglet(i)
 Worksheets(region).Select

    Dim Cellule As Range
    Dim Cellule2 As Range
    Dim Cellule3 As Range

    For Each Cellule In ActiveSheet.Range("AE9:AE1094")
        If Cellule Is Nothing Or Cellule.Value = "0" Then
            Cellule.Clear
        End If
        Next Cellule

    For Each Cellule2 In ActiveSheet.Range("AF9:AF1094")
        If Cellule2 Is Nothing Or Cellule2.Value = "0" Then
            Cellule2.Clear
        End If
        Next Cellule2

    For Each Cellule3 In ActiveSheet.Range("AG9:AG1094")
        If Cellule3 Is Nothing Or Cellule3.Value = "0" Then
            Cellule3.Clear
        End If
        Next Cellule3

    Range("AE9:AG1094").Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.NumberFormat = "m/d/yyyy"
Next i

End Sub
Rechercher des sujets similaires à "suppression ligne vide egale vba"