Comment supprimer des lignes vides dans VBA (avec exemples)
Vous pouvez utiliser les méthodes suivantes dans VBA pour supprimer les lignes vides :
Méthode 1 : supprimer les lignes vides dans une plage spécifique
Sub DeleteEmptyRowsInRange()
Sheets("Sheet1").Select
Range("A1:B10").Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Cette macro particulière supprimera toutes les lignes vides de la plage A1:B10 de Sheet1 .
Méthode 2 : supprimer les lignes vides dans la feuille entière
Sub DeleteEmptyRowsInSheet()
'turn off screen updating for faster performance
Application.ScreenUpdating = False
Dim i As Long
With ActiveSheet
For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If WorksheetFunction.CountA(.Rows(i)) = 0 Then
ActiveSheet.Rows(i).Delete
End If
Next
End With
'turn screen updating back on
Application.ScreenUpdating = True
End Sub
Cette macro particulière supprimera toutes les lignes vides de toute la feuille active.
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : Supprimer les lignes vides dans une plage spécifique
Supposons que nous ayons l’ensemble de données suivant dans Excel qui contient des informations sur divers joueurs de basket-ball :
Nous pouvons créer la macro suivante pour supprimer toutes les lignes vides de la plage A1:B10 sur cette feuille :
Sub DeleteEmptyRowsInRange()
Sheets("Sheet1").Select
Range("A1:B10").Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Une fois que nous exécutons cette macro, nous recevons le résultat suivant :
Notez que toutes les lignes vides ont été supprimées de la plage que nous avons spécifiée.
Exemple 2 : supprimer les lignes vides dans une feuille entière
Supposons que nous ayons l’ensemble de données suivant dans Excel qui contient des informations sur divers joueurs de basket-ball :
Nous pouvons créer la macro suivante pour supprimer toutes les lignes vides de la feuille entière :
Sub DeleteEmptyRowsInSheet()
'turn off screen updating for faster performance
Application.ScreenUpdating = False
Dim i As Long
With ActiveSheet
For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If WorksheetFunction.CountA(.Rows(i)) = 0 Then
ActiveSheet.Rows(i).Delete
End If
Next
End With
'turn screen updating back on
Application.ScreenUpdating = True
End Sub
Une fois que nous exécutons cette macro, nous recevons le résultat suivant :
Notez que toutes les lignes vides ont été supprimées de la feuille entière.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :
VBA : Comment supprimer des lignes en fonction de la valeur de la cellule
VBA : Comment supprimer une feuille si le nom contient un texte spécifique
VBA : comment supprimer des fichiers