Visual Basic For Applications
Supprimer les lignes vides avec VBA !

Une solution pour supprimer toutes les lignes vides d’une feuille de classeur Excel.

Principes

Le code que vous trouverez ci-dessous permet de supprimer toutes les lignes vides d’une feuille Excel.

Cette macro peut être particulièrement utile pour parer aux mauvaises manipulation : il arrive parfois en utilisant des filtres qu’on ajoute des lignes trop bas dans la feuille. Ce type d’erreur est assez fréquent et si on ne fait pas attention peut être la cause d’erreurs importantes.

Pour l’utiliser il suffit d’attribuer le nom de l’onglet à traite à la constante (à la place de DATA et toujours entre guillemets).

Particularité du code

Vous le remarquerez, cette macro est assez courte et relativement simple. Elle présente cependant 2 fonctions qui sont assez pratiques.

Boucle de bas en haut

Pourquoi ?

La macro boucle du bas vers le haut. C’est-à-dire qu’elle commence à partir de la dernière ligne de votre feuille.

Pourquoi ? Tout simplement car lorsqu’on supprime une ligne, on remonte de 1 toutes les lignes suivantes. Ainsi, si nous avions utilisé une boucle croissante, à chaque fois qu’une ligne aurait été suprimée, la macro aurait sauté une ligne. Par exemple, dans le cas de 2 lignes vides conscécutives, une seule aurait été supprimée. Pour éviter cela il aurait fallut ajouter une condition IF qui ferait reculer le compteur à chaque fois que le code supprime une ligne.

En utilisant une boucle décroissante, on simplifie considérablement la macro puisque nous n’avons besoin que d’une seule condition.

Comment ?

Pour ce faire, le code doit connaître qu’elle est la dernière ligne non-vide de votre feuille peu importe quelles colonnes sont vides ou non.

Cells.SpecialCells(xlCellTypeLastCell).Row

La syntaxe ci-dessus nous permet de déterminer cette limite. C’est donc pourquoi nous attribuons cette valeur à notre variable RowNumber.

La fonction .FIND

La fonction .FIND permet de rechercher une valeur dans une plage de cellules.

Dans notre macro, le caractère * indique à la fonction de rechercher n’importe quel type de caractère. Donc si elle ne trouve rien, c’est qu’il n’y a rien sur l’ensemble de la ligne et elle peut être supprimée.

La macro

 
'Auteur : www.Indexmatch.fr
'Date : 03/2018
 
Option Explicit
 
Const TARGET_SHEET_NAME As String = "DATA" 'A remplacer par le nom de l'onglet que vous voulez traiter.
 
Sub supprimer_lignes_vides()
 
Dim RowNumber As Integer
 
    Sheets(TARGET_SHEET_NAME).Activate
 
    RowNumber = Cells.SpecialCells(xlCellTypeLastCell).Row
 
    Do While RowNumber > 0
 
        If Rows(RowNumber).Find("*") Is Nothing Then Rows(RowNumber).Delete
 
        RowNumber = RowNumber - 1
 
    Loop
 
 
End Sub
Notez nous !
[Moyenne : 4.9]