Supprimer les lignes vides d'une page Excel (par macro) ?
Une toute petite macro pour supprimer les lignes vides dans une page Excel.
Sub suppr_lignes()
For lin = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Rows(lin).Find("*") Is Nothing Then Rows(lin).Delete
Next lin
End Sub
Explication :
La macro va balayer la plage active de bas en haut à la recherche de lignes vides.
De bas en haut, parce que quand la macro détecte une ligne vide,
elle doit la supprimer, ce qui a pour effet de "remonter" d'un cran toutes les lignes situées
en dessous.
Si on balaie les numéros de lignes par ordre croissant, on va donc sauter une ligne
à chaque fois qu'on en supprime une.
Cells.SpecialCells(xlCellTypeLastCell).Row est le numéro de
la dernière ligne non vide de la page Excel
(cliquez ici pour plus d'explications).
La ligne For lin = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
permet donc de balayer toutes les lignes de bas en haut (Step -1 signifie qu'on incrémen,te
la variable lin de -1 à chaque boucle).
La ligne suivante permet de déterminer si la ligne numéro "lin" est vide ou non :
Rows(lin).Find("*") recherche dans la ligne "lin" la première
cellule contenant le caractère joker "*", ce joker représentant n'importe quelle chaine
de caractères non vide.
Si la ligne est vide, aucune cellule ne sera trouvée et Rows(lin).Find("*")
renverra nothing.
Il suffit alors de supprimer la ligne par Rows(lin).Delete.
Remarque :
Sans macro, on peut aussi supprimer facilement les lignes dont la première cellule
est vide (ou bien la nième) :
Il suffit de sélectionner toutes les cellules de la page, puis de cliquer sur
Données / Trier / par colonne A.
Les lignes dont la première cellule est vide se trouveront renvoyêes en fin de page
(et pourront si nécessaire être supprimées.