Ce didacticiel montrera différentes manières de supprimer des lignes et des colonnes dans Excel à l'aide de VBA.
Supprimer la ligne ou la colonne entière
Pour supprimer une ligne entière dans VBA, utilisez cette ligne de code :
1 | Lignes(1).Supprimer |
Notez que nous utilisons le Effacer méthode pour supprimer une ligne.
Au lieu de faire référence au Objet de lignes, vous pouvez référencer des lignes en fonction de leur Objet de plage avec Ligne entière:
1 | Range("a1").EntireRow.Delete |
De la même manière, pour supprimer une colonne entière, utilisez ces lignes de code :
1 | Colonnes(1).Supprimer |
1 | Plage("a1").Colonne entière.Supprimer |
Supprimer plusieurs lignes ou colonnes
En utilisant la même logique, vous pouvez également supprimer plusieurs lignes à la fois :
1 | Lignes("1:3").Supprimer |
ou colonnes :
1 | Colonnes("A:C").Supprimer |
Notez ici que nous faisons référence aux numéros/lettres de ligne et de colonne spécifiques entourés de guillemets.
Bien entendu, vous pouvez également référencer l'EntireRow d'une plage :
1 | Plage("a1:a10").EntireRow.Delete |
Remarque : les exemples ci-dessous illustrent uniquement la suppression de lignes, mais comme vous pouvez le voir ci-dessus, la syntaxe est pratiquement identique pour supprimer des colonnes.
Supprimer les lignes vides/vides
Cet exemple supprimera une ligne si la ligne entière est vide :
1234567891011 | Sub DeleteRows_EntireRowBlank()Cellule obscurcie en tant que plagePour chaque cellule de la plage ("b2:b20")Si Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Alorscell.EntireRow.DeleteFin siCellule suivanteFin du sous-marin |
Il utilise la fonction de feuille de calcul Excel : COUNTA.
Supprimer la ligne si la cellule est vide
Cela supprimera une ligne si une colonne spécifique de cette ligne est vide (dans ce cas, la colonne B) :
1 | Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete |
Supprimer la ligne en fonction de la valeur de la cellule
Cela va parcourir une plage et supprimer des lignes si une certaine valeur de cellule dans cette ligne indique « supprimer ».
1234567891011 | Sub DeleteRowswithSpecificValue()Cellule tamisée en tant que plagePour chaque cellule de la plage ("b2:b20")Si cell.Value = "delete" Thencell.EntireRow.DeleteFin siCellule suivanteFin du sous-marin |
Plus d'exemples de suppression de lignes et de colonnes
Supprimer les lignes en double
Ce code supprimera toutes les lignes en double dans une plage :
1 | Plage ("b2:c100").Supprimer les colonnes en double :=2 |
Notez que nous définissons Colonnes : = 2. Cela indique à VBA de vérifier les deux premières colonnes de données lorsqu'il examine si les lignes sont des doublons. Un doublon n'est trouvé que lorsque les deux colonnes ont des valeurs en double.
Si nous avions défini cela sur 1, seule la première ligne aurait été vérifiée pour les valeurs en double.
Supprimer des lignes de tableau
Ce code supprimera la deuxième ligne d'un tableau en référençant ListObjects.
1 | ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete |
Supprimer les lignes filtrées
Pour supprimer uniquement les lignes visibles après le filtrage :
1 | Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete |
Supprimer des lignes dans la plage
Ce code supprimera toutes les lignes de la plage :
1 | Plage("a1:a10").EntireRow.Delete |
Supprimer les lignes sélectionnées
Ce code supprimera toutes les lignes sélectionnées :
1 | Selection.EntireRow.Delete |
Supprimer la dernière ligne
Cela supprimera la dernière ligne utilisée dans la colonne B :
1 | Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete |
En changeant 2 en 1, vous pouvez supprimer la dernière ligne utilisée dans la colonne A, etc. :
1 | Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete |
Supprimer des colonnes par numéro
Pour supprimer une colonne par son numéro, utilisez un code comme celui-ci :
1 | Colonnes (2).Supprimer |