Supprimer ligne vide

Bonjour,

J'ai une feuille Excel avec plus de 700 000 lignes par 16 colonnes. Dans cette base de données, il y a beaucoup de lignes vides. Je dois donc les supprimer pour être capable de les analyser avec une autre macro par la suite. J'ai donc fait une macro pour ce faire. La voici:

Sub supprimer_ligne_VIDE()
Dim compteur As Long    'Compteur pour changer de cellule
Dim Nbre_ligne_supprimer_enligne As Integer     'Compte le nombre de lignes effacées d'affillées

Application.ScreenUpdating = False

compteur = 3

Do
    'Supprime les lignes vides si la cellule est vide
    If IsEmpty(Range("B" & compteur)) Then
        Range("B" & compteur).EntireRow.Delete
        Nbre_ligne_supprimer_enligne = Nbre_ligne_supprimer_enligne + 1
        compteur = compteur - 1

    'S'il y a des lignes avec du "Trash" au travers, les supprime
    ElseIf Range("A" & compteur) = "Article" Then
        'Supprime la ligne
        Range("A" & compteur).EntireRow.Delete
        compteur = compteur - 1

    Else

        Nbre_ligne_supprimer_enligne = 0

    End If

compteur = compteur = 1

'Si le sub a supprimé plus de 10 lignes d'affilé, sort du sub, car surement rendu à la fin
Loop Until Nbre_ligne_supprimer_enligne > 10

Application.ScreenUpdating = True

End Sub

Cependant, cela prend plus de 30 minutes pour faire le tour de la feuille. Quelqu'un aurait un raccourcis à me proposer ?

Il est à noter que j'ai désactivé le calcul automatique avant de lancer la macro.

Merci!

Hehee

Bonjour,

Je ne comprends pas vraiment ce que tu voulais faire, mais j'ai, à mon avis, relevé quelques anomalies et ai rectifié la macro. Garde bien ta macro originale quelque part et remplace uniquement la partie suivante et teste à nouveau :

Do
    'Supprime les lignes vides si la cellule est vide
    If IsEmpty(Range("B" & compteur)) Then
        Range("B" & compteur).EntireRow.Delete
        Nbre_ligne_supprimer_enligne = Nbre_ligne_supprimer_enligne + 1            
    'S'il y a des lignes avec du "Trash" au travers, les supprime
     'ici on supprime une ligne mais pas d'incrémentation de compteur "ligne supprimée" !!!
    ElseIf Range("A" & compteur) = "Article" Then
        'Supprime la ligne
        Range("A" & compteur).EntireRow.Delete
    Else    
        Nbre_ligne_supprimer_enligne = 0
        compteur = compteur + 1       
    End If
'Si le sub a supprimé plus de 10 lignes d'affilé, sort du sub, car surement rendu à la fin
Loop Until Nbre_ligne_supprimer_enligne > 10

Bonjour

Je ne sais pas ce que cela donnerait sur 700 000 lignes, mais essayes de filtrer la colonne B sur vide et supprimes les lignes

fais la même chose sur l'autre colonne

Bonjour Raja

Banzai64 a écrit :

Bonjour

Je ne sais pas ce que cela donnerait sur 700 000 lignes, mais essayes de filtrer la colonne B sur vide et supprimes les lignes

fais la même chose sur l'autre colonne

Bonjour Raja

J'aime bien l'idée, sauf que lorsque je filtre sur la colonne B, comment je fais pour supprimer uniquement les lignes vides ? Lorsque je sélectionne les lignes à gauche, cela supprime aussi les lignes cachées/masquées.

Pour filtrer sur la colonne B en vba, je suis correct. Mais j'aurais besoin d'un coup de pouce pour effacer seulement les lignes apparaissant comme vides et aussi comment délimité la zone à effacer, puisqu'elle est vide

Merci !

Bonjour

Avant de te donner la réponse, j'ai testé sur quelques lignes et cela ne supprime que les lignes affichées

En vba tu n'es pas obligé de chercher la fin de ton tableau avec ta colonne qui contient du vide

Fournis un fichier pour tester

Rechercher des sujets similaires à "supprimer ligne vide"