Ce tutoriel va démontrer différentes façons de supprimer des lignes et des colonnes dans Excel en utilisant VBA.
Supprimer une ligne ou une colonne entière
Pour supprimer une ligne entière en VBA, utilisez cette ligne de code:
Rows(1).Delete
Notez que nous utilisons la méthode Delete pour supprimer une ligne.
Au lieu de référencer l’objet Rows, vous pouvez référencer les rangées en fonction de leur objet Range avec EntireRow:
Range("a1").EntireRow.Delete
De même, pour supprimer une colonne entière, utilisez ces lignes de code :
Columns(1).Delete
Range("a1").EntireColumn.Delete
Supprimer plusieurs lignes ou colonnes
En utilisant la même logique, vous pouvez également supprimer plusieurs lignes à la fois:
Rows("1:3").Delete
ou des colonnes:
Columns("A:C").Delete
Notez qu’ici nous référençons les numéros / lettres spécifiques des lignes et des colonnes entourés de guillemets.
Bien sûr, vous pouvez également faire référence à la ligne entière d’une plage:
Range("a1:a10").EntireRow.Delete
Note : Les exemples ci-dessous ne démontrent que la suppression de lignes, cependant comme vous pouvez le voir ci-dessus, la syntaxe est pratiquement identique pour supprimer des colonnes.
Supprimer des lignes vides / vides
Cet exemple supprimera une ligne si la ligne entière est vide :
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Il fait appel à la fonction de feuille de calcul Excel : COUNTA.
Supprimer une ligne si la cellule est vide
Ceci supprimera une ligne si une colonne spécifique de cette ligne est vide (dans ce cas, la colonne B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Supprimer une ligne en fonction de la valeur de la cellule
Ceci parcourra en boucle une plage, et supprimera des lignes si une certaine valeur de cellule dans cette ligne dit « supprimer ».
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Autres exemples de suppression de ligne et de colonne
Suppression de lignes en double
Ce code supprimera toutes les lignes en double dans une plage:
Range("b2:c100").RemoveDuplicates Columns:=2
Notez que nous avons défini Columns:=2. Cela indique à VBA de vérifier les deux premières colonnes de données lorsqu’il considère si les lignes sont des doublons. Un doublon n’est trouvé que lorsque les deux colonnes ont des valeurs dupliquées.
Si nous avions mis cette valeur à 1, seule la première ligne aurait été vérifiée pour les valeurs dupliquées.
Delete Table Rows
Ce code supprimera la deuxième ligne dans une Table en faisant référence à ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Supprimer les lignes filtrées
Pour ne supprimer que les lignes visibles après filtrage :
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Supprimer les lignes de la plage
Ce code supprimera toutes les lignes de la plage :
Range("a1:a10").EntireRow.Delete
Supprimer les lignes sélectionnées
Ce code supprimera toutes les lignes sélectionnées :
Selection.EntireRow.Delete
Supprimer la dernière ligne
Ce code supprimera la dernière ligne utilisée dans la colonne B :
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
En transformant 2 en 1, vous pouvez supprimer la dernière ligne utilisée dans la colonne A, etc.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Supprimer les colonnes par leur numéro
Pour supprimer une colonne par son numéro, utilisez un code comme celui-ci :
Columns (2).Delete
.