Comment supprimer une ligne entière dans Excel à l'aide de VBA (exemples)

L'ajout et la suppression de lignes font partie des tâches courantes quotidiennes lorsque vous travaillez avec Excel.

Bien que vous puissiez le faire facilement à partir de la feuille de calcul elle-même, vous souhaiterez parfois utiliser la route VBA pour supprimer des lignes dans Excel. Il peut s'agir de la suppression d'une ligne spécifique, de plusieurs lignes de la sélection, de la suppression de lignes alternatives ou de celles qui contiennent une valeur spécifique.

Dans ce tutoriel, je vais vous montrer comment supprimer des lignes dans Excel à l'aide de VBA (plusieurs scénarios).

Alors, commençons!

Supprimer une ligne entière en utilisant VBA

Pour supprimer une ligne entière dans Excel à l'aide de VBA, vous devez utiliser la méthode EntireRow.Delete.

Par exemple, si vous souhaitez supprimer toute la première ligne d'une feuille de calcul, vous pouvez utiliser le code ci-dessous :

Sub DeleteEntireRow() Rows(1).EntireRow.Delete End Sub

Le code ci-dessus spécifie d'abord la ligne qui doit être supprimée (ce qui est fait en spécifiant le nombre entre crochets), puis utilise la méthode EntireRow.Delete pour la supprimer.

Vous pouvez également supprimer plusieurs lignes en spécifiant ces lignes dans le code.

Par exemple, le code ci-dessous supprimera les lignes numéro 1, 5 et 9 dans la feuille de calcul :

Sub DeleteEntireRow() Rows(9).EntireRow.Delete Rows(5).EntireRow.Delete Rows(1).EntireRow.Delete End Sub

Le code ci-dessus utilise la même logique, où il spécifie les numéros de ligne et Excel supprimera ces lignes une par une.

IMPORTANT : lorsque vous supprimez des lignes avec quelque chose de similaire au code ci-dessus, n'oubliez pas de commencer à supprimer par le bas, puis de remonter. Par exemple, si vous commencez par le haut et supprimez d'abord la ligne 1, toutes les lignes en dessous seraient décalées d'une ligne vers le haut et la numérotation serait désactivée (car la ligne 5 deviendrait la ligne 4 et ainsi de suite)

Supprimer toutes les lignes de la sélection

Si vous souhaitez supprimer toutes les lignes d'une plage de cellules sélectionnée, vous pouvez utiliser le code de macro VBA ci-dessous :

Sub DeleteEntireRow() Selection.EntireRow.Delete End Sub

Le code ci-dessus s'applique à la méthode EntireRow.Delete à l'ensemble de la sélection.

Supprimer les lignes alternatives (ou supprimer chaque troisième/quatrième/nième ligne)

Parfois, vous pouvez obtenir un vidage de données où chaque deuxième ligne (ou troisième, quatrième ou énième lignes) est inutile et doit être supprimée.

J'avais l'habitude de travailler avec des données financières où chaque deuxième ligne était vide et devait être supprimée.

C'est le type de scénario où VBA brille vraiment.

Vous trouverez ci-dessous le code VBA qui parcourra toutes les lignes de la sélection et supprimera une ligne sur deux :

Sub DeleteAlternateRows() RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.Delete Next i End Sub

Laissez-moi vous expliquer comment fonctionne ce code VBA.

Tout d'abord, j'ai utilisé une variable RCompte pour obtenir le nombre total de lignes dans la sélection.

Ensuite, j'ai utilisé une boucle For Next pour exécuter cela autant de fois qu'il y a de lignes. Par exemple, s'il y a 12 lignes, cette boucle s'exécutera de 12 à 1 (c'est-à-dire 12 fois). Il est important de l'exécuter de la dernière ligne de la sélection à la première, car nous ne voulons pas que les numéros de ligne changent lorsqu'une ligne est supprimée.

De plus, l'étape -2 est utilisée car nous devons supprimer une ligne sur deux (de bas en haut). Si vous souhaitez supprimer une ligne sur trois, vous pouvez utiliser -3.

Dans la boucle VBA, j'ai utilisé la méthode Selection.Rows(i).EntireRow.Delete pour supprimer chaque ligne alternative.

Supprimer les lignes vides avec VBA

Vous pouvez également utiliser la méthode EntireRow.Delete pour supprimer toutes les lignes vides.

Vous trouverez ci-dessous le code VBA qui sélectionnera des cellules vides dans l'ensemble de données sélectionné et supprimera la ligne entière.

Sub DeleteBlankRows() Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

Le code ci-dessus utilise la propriété SpecialCells pour sélectionner et supprimer toutes les cellules vides. C'est la même méthode qui nous permet également d'utiliser la boîte de dialogue « Go To Special » pour sélectionner toutes les cellules vides.

Une fois ces cellules vides identifiées à l'aide de SpecialCell, elles sont ensuite supprimées à l'aide de la méthode EntireRow.Delete.

Remarque : cette méthode sélectionne les cellules vides et ne vérifie pas si toute la ligne est vide ou non. Donc, si une cellule est vide dans une ligne, cela supprimerait toujours la ligne entière.

Supprimer des lignes avec un mot/une valeur spécifique

Vous pouvez également utiliser un simple code VBA pour parcourir chaque cellule de la plage sélectionnée et supprimer toutes les lignes où une cellule contient un texte ou une valeur spécifique.

Par exemple, supposons que vous ayez un ensemble de données et que je souhaite supprimer toutes les cellules contenant le texte Imprimante dans la colonne 2 de la sélection.

Ci-dessous le code qui fera cela :

Sub DeleteRowswithSpecificValue() For i = Selection.Rows.Count To 1 Step -1 If Cells(i, 2).Value = "Printer" Then Cells(i, 2).EntireRow.Delete End If Next i End Sub

Le code ci-dessus compte d'abord le nombre total de lignes dans la sélection. Cela garantira que la boucle n'est exécutée que ces nombreuses fois. Il utilise ensuite la "boucle For Next" pour parcourir toutes les cellules de la colonne 2.

L'instruction IF THEN ELSE est ensuite utilisée pour vérifier la valeur dans chaque cellule de la colonne 2. Et au cas où la valeur/le texte correspond au texte spécifié (qui est « Imprimante » dans cet exemple).

Dans cet exemple, j'ai vérifié si le texte correspond ou non à une chaîne spécifique. Vous pouvez également le faire avec des valeurs. Par exemple, vous pouvez supprimer toutes les lignes où la valeur de vente est inférieure à 1000 ou supérieure à 1000.

Remarque : Une chose importante à noter ici est que la boucle s'exécute à partir de Selection.Rows.Count To 1 pour s'assurer qu'une ligne est supprimée, cela n'a pas d'impact sur les lignes au-dessus.

Comment utiliser ce code VBA

Maintenant, laissez-moi vous montrer comment utiliser tous les codes mentionnés dans ce tutoriel pour supprimer toute la ligne.

Vous devez copier et coller ces codes dans un module d'Excel VB Editor. Une fois que vous avez copié ces codes, vous pouvez ensuite exécuter les codes de macro.

Voici les étapes pour copier et coller ces codes VBA dans un module :

  1. Maintenez la touche ALT enfoncée et appuyez sur la touche F11 (ou Fonction + Option + F11 sous Mac). Cela ouvrira l'éditeur VB
  2. Dans l'éditeur VB, vous aurez l'explorateur de projet sur la gauche. Si vous ne le voyez pas, accédez à l'option Afficher, puis cliquez sur Explorateur de projets.
  3. Cliquez avec le bouton droit sur n'importe quel objet dans l'explorateur de projets (pour le classeur dans lequel vous souhaitez exécuter le code).
  4. Allez dans Insérer puis cliquez sur Module. Cela insérera un nouveau module pour le classeur
  5. Copiez et collez les codes ci-dessus dans le module.

Et pour exécuter ces codes, vous pouvez placer le curseur n'importe où dans le code (que vous souhaitez exécuter) et appuyer sur la touche F5 (ou cliquer sur le triangle vert dans la barre d'outils VBA).

J'ai également écrit un didacticiel détaillé sur les différentes manières d'exécuter des codes de macro VBA dans Excel.

Au cas où vous auriez besoin d'utiliser l'un de ces codes assez souvent, vous pouvez également envisager de les ajouter au classeur de macros personnelles, puis au QAT. De cette façon, le code sera disponible dans n'importe lequel de vos classeurs en un seul clic.

Il s'agissait donc de quelques codes VBA que vous pouvez utiliser pour supprimer des lignes entières dans Excel (dans différents scénarios). La même logique peut également être appliquée au cas où vous souhaiteriez supprimer des colonnes au lieu de lignes (avec l'ajustement correspondant dans les exemples de code).

J'espère que vous avez trouvé ce tutoriel utile!

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave