XL 2010 Supprimer lignes à 0 sur plusieurs colonnes

malou1006

XLDnaute Nouveau
Bonsoir,

J'ai un fichier dans lequel j'ai des colonnes de 2018 à 2022 mais pour certaines lignes il y a des 0 mais pas dans chaque colonne.

Je cherche un moyen pour supprimer les lignes qui sont à 0 de 2018 à 2022 par exemple les lignes des comptes 62118 et 6214 doivent être supprimées et celle du 62141 doit rester.

1686584672755.png


Pourriez-vous m'aider je ne trouve pas de solutions.

PS : je suis sur Excel 2010

Merci à tous
 
Solution
Re

@malou1006
En ajoutant une colonne supplémentaire avec cette formule
=NB.SI(C2:F2;0)=4
( à recopier vers le bas)
Ensuite sur cette colonne, on applique un filtre automatique avec comme critère : VRAI
Il suffit ensuite de supprimer les lignes filtrées.

NB: Si le volume de lignes est plus conséquent que ton exemple, on peut utiliser une macro pour se simplifier la tâche.

Staple1600

XLDnaute Barbatruc
Bonjour @malou1006

Deux questions
1) Ne pas afficher les valeurs 0 ne ne suffit pas ?

2) Tu veux supprimer les lignes ou les masquées?

PS: Si tu joignais un extrait allégé et anonymisé de ton fichier (donc un fichier Excel) se serait plus simple pour faire des tests
(Avec une image, on ne peut rien faire : ni formules, ni macro)

EDITION: Bonjour @sylvanu
 

malou1006

XLDnaute Nouveau
Bonjour @malou1006

Deux questions
1) Ne pas afficher les valeurs 0 ne ne suffit pas ?

2) Tu veux supprimer les lignes ou les masquées?

PS: Si tu joignais un extrait allégé et anonymisé de ton fichier (donc un fichier Excel) se serait plus simple pour faire des tests
(Avec une image, on ne peut rien faire : ni formules, ni macro)

EDITION: Bonjour @sylvanu
 

Pièces jointes

  • Classeur2.xlsx
    38.8 KB · Affichages: 1

Staple1600

XLDnaute Barbatruc
Re

@malou1006
En ajoutant une colonne supplémentaire avec cette formule
=NB.SI(C2:F2;0)=4
( à recopier vers le bas)
Ensuite sur cette colonne, on applique un filtre automatique avec comme critère : VRAI
Il suffit ensuite de supprimer les lignes filtrées.

NB: Si le volume de lignes est plus conséquent que ton exemple, on peut utiliser une macro pour se simplifier la tâche.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec :
VB:
Sub SuppLignes()
    Application.ScreenUpdating = False                  ' On fige l'écran
    DL = [A65000].End(xlUp).Row                         ' Dernière ligne de Résultat
    f = "=SI(SOMME(D2:G2)=0;CAR(1);0)"                  ' Formule utilisée. Attention ajouter 1 aux colonnes pour compenser nouvelle colonne en A."
    With Range("ZZ2:ZZ" & DL)                             ' Plage où coller la formule en colonne A qui sera triée
        .FormulaLocal = f                               ' Coller formule
        .EntireRow.Sort .Cells, xlDescending            ' Tri pour regrouper et accélérer
        .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete  ' Suppression des lignes concernées
        .ClearContents                                  ' Effacement colonne formules
    End With
    Columns.AutoFit                                     'Ajustement largeurs colonnes
    With ActiveSheet.UsedRange: End With                'Ajustement barres de défilement
    [A1].Select
End Sub
 

Pièces jointes

  • Classeur2.xlsm
    49.2 KB · Affichages: 1

malou1006

XLDnaute Nouveau
Re

@malou1006
En ajoutant une colonne supplémentaire avec cette formule
=NB.SI(C2:F2;0)=4
( à recopier vers le bas)
Ensuite sur cette colonne, on applique un filtre automatique avec comme critère : VRAI
Il suffit ensuite de supprimer les lignes filtrées.

NB: Si le volume de lignes est plus conséquent que ton exemple, on peut utiliser une macro pour se simplifier la tâche.
oui j'avais plus de 250 lignes mais ça va c'est top merci beaucoup et bonne soirée
 

malou1006

XLDnaute Nouveau
Re,
Un essai en PJ avec :
VB:
Sub SuppLignes()
    Application.ScreenUpdating = False                  ' On fige l'écran
    DL = [A65000].End(xlUp).Row                         ' Dernière ligne de Résultat
    f = "=SI(SOMME(D2:G2)=0;CAR(1);0)"                  ' Formule utilisée. Attention ajouter 1 aux colonnes pour compenser nouvelle colonne en A."
    With Range("ZZ2:ZZ" & DL)                             ' Plage où coller la formule en colonne A qui sera triée
        .FormulaLocal = f                               ' Coller formule
        .EntireRow.Sort .Cells, xlDescending            ' Tri pour regrouper et accélérer
        .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete  ' Suppression des lignes concernées
        .ClearContents                                  ' Effacement colonne formules
    End With
    Columns.AutoFit                                     'Ajustement largeurs colonnes
    With ActiveSheet.UsedRange: End With                'Ajustement barres de défilement
    [A1].Select
End Sub
c'est top aussi plus rapide forcément via VB. Merci beaucoup et bonne soirée
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Autre solution :
VB:
Sub Supprimer()
Dim ncol%, i&, flag As Boolean, v#, j%
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    ncol = .Columns.Count
    For i = .Rows.Count To 1 Step -1
        flag = False
        v = 0
        For j = 3 To ncol
            If IsNumeric(CStr(.Cells(i, j))) Then flag = True: v = v + Abs(.Cells(i, j))
        Next j
        If flag And v = 0 Then .Rows(i).Delete xlUp
    Next i
End With
End Sub
A+
 

Discussions similaires

Réponses
2
Affichages
322

Statistiques des forums

Discussions
315 104
Messages
2 116 252
Membres
112 697
dernier inscrit
administratif@ets-delestr