Macro suppression de ligne avec un 0

David066

XLDnaute Nouveau
Bonjour à tous,

je souhaiterai créer une macro me permettant de supprimer une ligne lorsque deux colonnes prennent la valeur 0.
Je m'explique, mon fichier se présente de la façon suivante:

3 0
4 0
5 0
7 0
3 5
0 0
0 0
0 0
0 0
4 5
5 6

Dans cette série la macro devrait me supprimer les lignes 6 à 9.


Si quelqu'un a une solution.....
 

laetitia90

XLDnaute Barbatruc
Re : Macro suppression de ligne avec un 0

bonjour David066
suppose les 2 premieres colonnes a adapter

Code:
Sub es()
Dim i As Long
Application.ScreenUpdating = False
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(i, 1) = 0 And Cells(i, 2) = 0 Then Rows(i).Delete
Next i
End Sub
 

David066

XLDnaute Nouveau
Re : Macro suppression de ligne avec un 0

J'imagine que je dois apparaitre pour un nul :)
Peux-tu me dire comment adapter la macro a mon
fichier qui présente deux colonnes A et B allant de
la ligne 2 jusqu'à la ligne 198001.
Désolé...
 

Staple1600

XLDnaute Barbatruc
Re : Macro suppression de ligne avec un 0

Bonjour le fil, David066, laetitia90 ;)


Une autre façon en passant par le filtre automatique
(qui a l'avantage d'éviter de boucler)

VB:
Sub Macro1()
Dim r As Range, rf As Range
With ActiveSheet
    Set r = _
        .[A1].CurrentRegion: r.AutoFilter 1, "0": r.AutoFilter 2, "0"
    
    Set rf = _
        .[_FilterDataBase]: rf.Offset(1, 0).Resize(rf.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
    .AutoFilterMode = False
End With
End Sub

PS: code fonctionnel dans les conditions de test décrites ci-dessous:
Les colonnes A et B seulement contiennent des données et il n'y a pas de cellules vides dans ces colonnes.
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Macro suppression de ligne avec un 0

re, bonjour l'ami Staple:):):):):):):):):)

j'ai pas le reflexe d'utiliser les filtres bien plus simple & plus rapide bien vu:eek::eek:
peut tu me dire a quoi correspond le 12:confused::confused:

Code:
        .[_FilterDataBase]: rf.Offset(1, 0).Resize(rf.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
 

david84

XLDnaute Barbatruc
Re : Macro suppression de ligne avec un 0

Bonjour tout le monde,
une autre possibilité en passant par des tableaux VBA (code moins compact mais je pense que la vitesse d'exécution est également rapide) :
Code:
Sub test2()
Dim tabl, DerLigne&, Plage, Nb&, i&, j&
With ActiveSheet
    Set Plage = .Range("A1:B" & Range("B" & Rows.Count).End(xlUp).Row)
    tabl = Plage.Value
    j = 0
        For i = 1 To Plage.Rows.Count
            If tabl(i, 1) + tabl(i, 2) <> 0 Then
                Dim tabl2()
                ReDim Preserve tabl2(Plage.Rows.Count, Plage.Columns.Count - 1)
                tabl2(j, 0) = tabl(i, 1)
                tabl2(j, 1) = tabl(i, 2)
                j = j + 1
            End If
        Next i
    .[A1].Resize(Plage.Rows.Count, Plage.Columns.Count) = tabl2
End With
End Sub
A+
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Macro suppression de ligne avec un 0

Re
attention david84 si donnees sur les autres colonnes dans ce cas la tu supprime seulement sur colonne a & b
Oui mais là ce n'est qu'un exemple à adapter à la configuration du fichier réel.
Je n'ai fait que colle aux indications fournies :
Peux-tu me dire comment adapter la macro a mon
fichier qui présente deux colonnes A et B allant de
la ligne 2 jusqu'à la ligne 198001.
A moins que tu veuilles me faire comprendre autre chose...
A+ Laetitia
 

Discussions similaires

Réponses
7
Affichages
390
Réponses
4
Affichages
187
Réponses
0
Affichages
175

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux