Suppression de lignes vides avec formules

Bonjour à tous,

Je me permets de poser la question concernant un code VBA dont le but est de supprimer les lignes vides sur un onglet donné. Le problème étant que ce sont de "fausses" lignes vides, c'est à dire qu'elles contiennent des formules (des fonctions SI) qui renvoient un vide ("").

J'ai utilisé cette macro

Range("A450").End(xlUp).Select
    Do
        If ActiveCell.Value = "" Then
            ActiveCell.EntireRow.Delete
        End If
        ActiveCell.Offset(-1, 0).Select
    Loop Until ActiveCell.Row = 1

Mais elle ne supprime que les lignes effectivement vides, celles contenant une formule sont considérées comme renseignées, quand bien même la formule renvoie une valeur vide.

Est-il possible malgré tout d'automatiser cette suppression ? J'ai déjà fait quelques recherches mais les codes proposées ont tous le même résultat.

Merci d'avance,

Bonsoir,

Essaye ce code suivant :

Sub supprimerLigneVide()
    For lig = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        If Application.CountBlank(Rows(lig)) = Application.Columns.Count Then
            Rows(lig).EntireRow.Delete
        End If
    Next
End Sub

Ou bien teste sur la colonne A qui contiendrait la formule :

Sub supprimerLigneVide()
    For lig = Range("A" & Application.Rows.Count).End(xlUp).Row To 1 Step -1
        If Application.CountBlank(Rows(lig)) = Application.Columns.Count Then
            Rows(lig).EntireRow.Delete
        End If
    Next
End Sub

Merci pour la réponse mais ça n'a pas l'air de fonctionner : la macro tourne mais ne s'arrête pas. J'ai pas mal de lignes dans mon onglet mais j'ai l'impression que la macro fonctionne "dans le vide", je l'ai laissée tourner vingt minutes pour en être certain.

Re,

Il faut un petit bout de fichier pour tester. Je ne sais pas comment ton fichier est organisé.

Bonjour, Bonjour Raja

A tester.

Cdlt

Option Explicit
Public Sub Suppression()
Dim Ws As Worksheet
Dim Derligne As Long, i As Long
Dim Plage As Range
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil1")
    With Ws
        Derligne = .Range("A" & Rows.Count).End(xlUp).Row
        Set Plage = .Range("A450:A" & Derligne)
        For i = Derligne To 1 Step -1
            If .Cells(i, 1) = "" Or .Cells(i, 1).HasFormula _
                And .Cells(i, 1) = 0 Then .Cells(i, 1).EntireRow.Delete
        Next
    End With
    Set Ws = Nothing: Set Plage = Nothing
End Sub

Ça fonctionne : pour d'autres personnes passant sur le sujet, j'ai testé les trois codes et les trois fonctionnent.

Merci pour votre aide.

Bonjour,

Grâce aux précédents post, j'ai trouvé une partie de ma solution, soit :

Supprimer les lignes vides mêmes si elles contiennent des formules qui ne génèrent pas de résultats.

En revanche, j'aurais besoin de le faire uniquement dans les tableaux.

(Mon fichier est constitué d'une suite de nombreux tableaux et entre chaque, j'ai besoin de laisser une ligne pour la mise en page).

S'il n'est pas possible d'indiquer "uniquement dans les tableaux", j'aimerais à ce moment, pouvoir lui indiquer les différentes plages mais je ne sais comment les mentionner dans le code.

Pour info, celle qui fonctionne chez moi et la première donnée par Raja :

Sub supprimerLigneVide()

For lig = ActiveSheet.UsedRange.Rows.Count To 1 Step -1

If Application.CountBlank(Rows(lig)) = Application.Columns.Count Then

Rows(lig).EntireRow.Delete

End If

Next

End Sub

J'utilise Excel 2013.

Merci par avance si vous l'un d'entre accepte de me donner un coup de pouce !

Bonjour et bienvenue,

Tu ouvres un nouveau sujet et tu joins un classeur à ta demande.

Cdlt.

Rechercher des sujets similaires à "suppression lignes vides formules"