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 SubCependant, 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 > 10Bonjour
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