Suppression de lignes sous conditions

Bonjour le Forum,

Beaucoup de macro de suppression de lignes trouvées sur le net mais aucune qui corresponde à ce dont j’ai à nouveau besoin aujourd’hui.

Je dispose d’un énorme fichier de plus de 500 feuilles dont chacune contient plus de 36 000 lignes (et oui…).

Le traitement de toutes ces données étant terminé il faudrait que je supprime toutes les lignes devenues inutiles.

Dans chaque feuille il y a une colonne « G » dont les cellules sont vides ou contiennent une valeur numérique pouvant aller jusqu’à 300.

Il faudrait ici repérer, en partant du bas, la première ligne dont la cellule de la colonne « G » contient une valeur numérique (et donc non vide, au choix, lol) et supprimer toutes les lignes qui se trouvent au-dessus pour ne conserver que cette fameuse première ligne ainsi que toutes les autres lignes du dessous dont les cellules de la colonne « G » sont vides (forcément…).

La macro doit s’appliquer sur toutes les feuilles du classeur, exceptée la toute première.

Si dans le traitement de chaque feuille, la macro rencontre une feuille dont la colonne « G » ne contient aucune valeur numérique (que des cellules vides), alors ne rien faire (ne supprimer aucune ligne) et passer à la feuille suivante.

Voili, voulou, pour ceux qui se sentent d’écrire ça entre le dessert et le café.

Un grand merci d’avance et bonne journée

Bonjour,

une proposition (à tester sur une copie de ton fichier !)

Sub aargh()
    For Each ws In Worksheets
        With ws
            If .Index > 1 Then
                dl = .Cells(Rows.Count, "G").End(xlUp).Row
                If dl > 2 Then
                    .Rows("2:" & dl).Delete shift:=xlUp
                End If
            End If
        End With
    Next
End Sub

Bonsoir h2so4,

Dsl mais le test a pris du temps, fichier volumineux oblige.

Ta macro marche mais nous nous sommes mal compris ou plutôt, je me suis mal exprimé...

La première ligne à conserver n'est pas celle de chaque feuille, soit la ligne 1, comme cela est constaté sur le résultat obtenu.

Mais la première ligne à conservée est celle rencontrée en partant du bas et qui contient dans la cellule de sa colonne "G" une valeur (et donc non vide).

C'est cette ligne, avec sa valeur en colonne "G", que je souhaite conserver ainsi que toutes les autres en dessous.

Si tu peux rectifier... Le digeo est pour moi...

bonjour,

code adapté

Sub aargh()
    Application.ScreenUpdating = False
    For Each ws In Worksheets
        With ws
            If .Index > 1 Then
                dl = .Cells(Rows.Count, "G").End(xlUp).Row
                If dl > 2 Then
                    .Rows("1:" & dl - 1).Delete shift:=xlUp
                End If
            End If
        End With
    Next
    Application.ScreenUpdating = True
End Sub

Tip Top

Super

Génial

Un grand merci à toi

Rechercher des sujets similaires à "suppression lignes conditions"