Ajouter et supprimer des rangées fait 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 pouvez parfois vouloir utiliser la voie VBA pour supprimer des rangées dans Excel. Il peut s’agir de la suppression d’une ligne spécifique, de plusieurs lignes dans la sélection, de la suppression de lignes alternées ou de celles qui contiennent une valeur spécifique.
Dans ce tutoriel, je vais vous montrer comment supprimer des lignes dans Excel en utilisant VBA (plusieurs scénarios).
Alors, commençons !
Ce tutoriel couvre :
Supprimer une ligne entière en utilisant VBA
Pour supprimer une ligne entière dans Excel en utilisant VBA, vous devez utiliser la méthode EntireRow.Delete.
Par exemple, si vous voulez supprimer l’intégralité de la première ligne d’une feuille de calcul, vous pouvez utiliser le code ci-dessous :
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
Le code ci-dessus spécifie d’abord la ligne qui doit être supprimée (ce qui est fait en spécifiant le numéro entre parenthèses) et utilise ensuite 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 la ligne numéro 1, 5 et 9 dans la feuille de calcul :
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd 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.
Supprimer toutes les rangées dans la sélection
Dans le cas où vous voulez supprimer toutes les rangées dans une plage sélectionnée de cellules, vous pouvez utiliser le code de macro VBA ci-dessous :
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
Le code ci-dessus s’applique à la méthode EntireRow.Delete à l’ensemble de la sélection.
Supprimer les rangs alternatifs (ou supprimer chaque troisième/quatrième/neuvième rang)
Parfois, vous pouvez obtenir un vidage de données où chaque deuxième rang (ou troisième, quatrième ou Nième rang) est inutile et doit être supprimé.
J’avais l’habitude de travailler avec des données financières où une ligne sur deux était vide et devait être supprimée.
C’est le type de scénario où VBA brille vraiment.
Voici le code VBA qui va parcourir toutes les lignes de la sélection et supprimer une ligne sur deux :
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Laissez-moi vous expliquer comment ce code VBA fonctionne.
D’abord, j’ai utilisé une variable RCount pour obtenir le nombre total de lignes dans la sélection.
Puis j’ai utilisé une boucle For Next pour exécuter ceci 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 d’exécuter cela 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). Au cas où vous voudriez supprimer une ligne sur trois, vous pouvez utiliser l’étape -3.
Dans la boucle VBA, j’ai utilisé la méthode Selection.Rows(i).EntireRow.Delete pour supprimer une ligne sur deux.
Supprimer les lignes vides avec VBA
Vous pouvez également utiliser la méthode EntireRow.Delete pour supprimer toutes les lignes vides.
Voici le code VBA qui sélectionnera les cellules vides dans l’ensemble de données sélectionné et supprimera la ligne entière.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd 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 que ces cellules vides sont identifiées à l’aide de SpecialCell, celles-ci sont ensuite supprimées à l’aide de la méthode EntireRow.Delete.
Supprimer les rangées avec un mot/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 rangées 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 veuille supprimer toutes les cellules qui ont le texte Imprimante dans la colonne 2 de la sélection.
Voici le code qui va faire cela:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
Le code ci-dessus compte d’abord le nombre total de lignes dans la sélection. Cela permettra de s’assurer que la boucle n’est exécutée que ce nombre de 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 à une chaîne spécifique ou non. Vous pouvez également faire cela avec des valeurs. Par exemple, vous pouvez supprimer toutes les lignes où la valeur de vente est inférieure à 1000 ou supérieure à 1000.
Note : Une chose importante à noter ici est que la boucle s’exécute à partir de Selection.Rows.Count To 1 pour s’assurer que lorsqu’une ligne est supprimée, cela n’a pas d’impact sur les lignes au-dessus d’elle.
Comment utiliser ce code VBA
Maintenant, laissez-moi vous montrer comment utiliser tous les codes mentionnés dans ce tutoriel pour supprimer la ligne entière.
Vous devez copier et coller ces codes dans un module de l’éditeur VB d’Excel. Une fois que vous avez copié ces codes, vous pouvez ensuite exécuter les codes macro.
Voici les étapes pour copier et coller ces codes VBA dans un module :
- Maintenez la touche ALT et appuyez sur la touche F11 (ou Fonction + Option + F11 sur Mac). Cela ouvrira l’éditeur VB
- Dans l’éditeur VB, vous aurez l’explorateur de projet sur la gauche. Si vous ne le voyez pas, allez dans l’option Affichage puis cliquez sur Explorateur de projet.
- Cliquez avec le bouton droit de la souris sur n’importe quel objet de l’explorateur de projet (pour le classeur dans lequel vous voulez exécuter le code).
- Allez dans Insertion puis cliquez sur Module. Cela va insérer un nouveau Module pour le classeur
- Copier et coller 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 voulez exécuter) et appuyer sur la touche F5 (ou cliquer sur le triangle vert dans la barre d’outils VBA).
J’ai également rédigé un tutoriel détaillé sur les différentes façons d’exécuter des codes macro VBA dans Excel.
Voici donc 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 dans le cas où vous souhaitez 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 aimerez peut-être aussi les tutoriels Excel suivants :
- Excel VBA Autofilter : Un guide complet avec des exemples
- Supprimer des lignes en fonction de la valeur d’une cellule (ou d’une condition) dans Excel
- Insérer une ligne vierge après chaque ligne dans Excel (ou chaque Nième ligne)
- Comment décacher rapidement des COLONNES dans Excel
.