XL 2016 Suppression de lignes si toutes les cellules = 0

  • Initiateur de la discussion Initiateur de la discussion ynx69
  • 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 !

ynx69

XLDnaute Junior
Bonjour à tous,

J'ai besoin de votre aide suite à un problème que je rencontre. Je dispose d'un classeur excel avec n feuilles.
Sur ces n feuilles, j'ai n colonnes. Chaque colonne correspond à une référence sauf les colonnes A et B qui sont mes en têtes.

Je souhaiterais , par le biais d'une macro , supprimer les lignes dont l'ensemble des cellules (en partant de la colonne C jusqu'à la n-ième ) sont égale à 0 à partir de la ligne 15 jusqu'à la ligne 78.

Dans l'exemple que je vous fournis en pièce jointe, si l'on se concentre sur les lignes 15 à 78, il y a au total 54 lignes à supprimer. Je devrais donc me retrouver avec 9 lignes qui comporterons des données.

Pourriez-vous m'éclairer sur ce point ?

En vous souhaitant une excellente journée.
 

Pièces jointes

Bonjour

une idée
VB:
Sub Macro1()
'
' Macro1 Macro
'

'
    Range("M14").FormulaR1C1 = "To Sup"
    Range("M15").FormulaR1C1 = "=COUNT(RC[-10]:RC[-1])" 'formule pour detecter les lignes vides
   
    Range("M15:M78").FillDown 'recopie de la formule
    Range("A14:M14").AutoFilter 'active le filtre
    ActiveSheet.Range("$A$14:$M$83").AutoFilter Field:=13, Criteria1:="0" 'n'affiche que les lignes vides
     ActiveSheet.Range("$M$14:$M$83").SpecialCells(xlCellTypeVisible).EntireRow.Delete 'supprime les lignes affichées (donc vides)
     'Range("A14:M14").AutoFilter
     Range("M14:M78").ClearContents 'on efface la colonne M
End Sub
 
@vgendron je viens d'essayer ta methode, c'est brut de décofrage mais ca fonctionne très bien ! 🙂

Alors j'ai juste un point sur lequel j'aimerais que tu m'éclaires..

Comment puis-je adapter ta macro pour qu'elle s'éxécute sur toutes les feuilles ( de la feuille = 2 à sheet.count )
et deuxième point dans l'exemple que je t'ai donné, tu effectues les calculs en colonne M, or dans la pratique la feuille a un nombre de colonnes variables...

comment on peut coder une séquence qui :
Boucle sur les feuilles et à chaque feuille viens faire la manip que tu as codé dans la colonne suivant la derniere colonne non vide ?

Merci pour ton aide
 
Hello
un essai avec ceci

VB:
Sub Macro1()
'
' Macro1 Macro
'
For Each ws In Worksheets 'pour chaque feuille du classeur
    If ws.Name <> "NomFeuille" Then 'remplacer "NomFeuille" par le nom de la feuille à ne pas traiter, s'il y a
        With ws 'avec la feuille
            LastCol = .UsedRange.SpecialCells(xlLastCell).Column + 1 'récupère la dernière colonne non vide +1
            .Cells(14, LastCol).FormulaR1C1 = "To Sup"
            .Cells(15, LastCol).FormulaR1C1 = "=COUNT(RC[-10]:RC[-1])" 'formule pour detecter les lignes vides
            .Range(.Cells(15, LastCol), .Cells(78, LastCol)).FillDown 'recopie de la formule jusqu'en ligne 78
            .Rows("14:14").AutoFilter 'active le filtre sur la ligne 14
            .UsedRange.AutoFilter Field:=13, Criteria1:="0" 'n'affiche que les lignes vides sur la 13eme colonne de la zone filtrée
            .UsedRange.SpecialCells(xlCellTypeVisible).EntireRow.Delete 'supprime les lignes affichées (donc vides)
     
            .Columns(LastCol).ClearContents 'on efface la dernière colonne qui a servi pour le calcul
        End With
    End If
Next ws
End Sub
 
Bonsoir le fil, le forum, ynx69, vgendron

Une autre syntaxe
(test OK sur XL 2013)
VB:
Sub a() 
Dim ws As Worksheet, l&, c& 
Application.ScreenUpdating = False 
For Each ws In Worksheets 
c = ws.Cells(2, Columns.Count).End(xlToLeft).Column + 1 
l = ws.Cells(Rows.Count, 1).End(xlUp).Row - 1 
With ws.Cells(3, c).Resize(l) 
.Value = "=1/(COUNTA(C3:L3))" 
.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete 
.ClearContents 
End With 
Next 
End Sub

NB: Testé sur le fichier exemple, donc en partant du principe que toutes les feuilles commencent en ligne 2.
Donc a adapter si la structure des feuilles diffère.
 
- 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

Réponses
7
Affichages
795
Retour