Dans Excel, vous pouvez supprimer une ligne en cliquant avec le bouton droit sur le numéro de la ligne, puis en sélectionnant Supprimer. Mais lorsque vous souhaitez supprimer des lignes à l’aide de méthodes plus sophistiquées, vous devez utiliser VBA. Cela vous permettra de supprimer des lignes de différentes manières.
Supprimer une ligne spécifique
La façon la plus simple de supprimer une ligne dans VBA consiste à utiliser le numéro de ligne.
Sub deleteSpecificRow()Rows(4).DeleteEnd Sub
Cela supprimera la quatrième ligne chaque fois que vous exécuterez la macro.
Supprimer plusieurs lignes
Vous pouvez également supprimer quelques lignes à la fois. Au lieu de sélectionner le numéro de ligne, sélectionnez une plage de lignes.
Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub
Il supprimera les lignes 2, 3 et 4.
Supprimer les lignes sélectionnées
Jusqu’à présent, nous avons créé des macros qui supprimaient les lignes avec des nombres fixes à l’intérieur du code. Cette fois, supprimons les lignes d’une sélection. Utilisons le code suivant.
Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub
Supprimer les lignes vides
Dans cet exemple, Excel identifie les cellules vides, les sélectionne et supprime les lignes dans lesquelles elles sont présentes.
Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub
Cette macro supprime les lignes de la sélection uniquement si elle contient la phrase ”Mauvaise ligne ».
ATTENTION
N’oubliez pas que le texte est sensible à la casse.
Sub deleteRowswithSelectedText()For Each Cell In Selection If Cell.Value = "Bad Row" Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub
Analyse de code
2. La boucle passe par chaque élément de la sélection.
3. Excel vérifie la valeur réelle de la cellule et si la valeur est exactement « Mauvaise ligne ».
4. Si la condition est remplie, Excel efface le contenu de la cellule. Nous ne pouvons pas supprimer de cellule car la position de la cellule changera et certaines « mauvaises lignes” peuvent rester.
7. Lorsque toutes les « mauvaises lignes » sont effacées, Excel sélectionne ces cellules.
8. Supprime ensuite les lignes de ces cellules.
Si vous souhaitez également supprimer les lignes composées de cette phrase, et pas seulement la correspondance exacte, utilisez la fonction InStr. Cette fonction renvoie la position de la première occurrence de la phrase.
Changez
Cell.Value = "Bad Row"
en
InStr(Cell, "Bad Row") > 0
Nous avons quatre exemples différents dans notre feuille de calcul. Chacun d’eux renvoie une position.
- ”Mauvaise ligne » renvoie 1
- « Bonne ligne » renvoie 0
- ”1 Mauvaise ligne » renvoie 3
- « Mauvaise ligne! » renvoie 1
Cela signifie que toutes les lignes sauf « Bonne ligne » seront supprimées.
Supprimer une ligne où le type de cellule est une chaîne
Dans cet exemple, nous supprimerons une ligne si le type de cellule est une chaîne.
À première vue, les cellules A3, A4 et A5 semblent être du même type. Mais quand vous regardez ce qui se passe dans les coulisses (Ctrl + `), vous verrez que chacun d’eux est différent.
Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub
Dans la deuxième ligne, vous avez le code suivant: xlCellTypeConstants. Cela signifie que nous recherchons des constantes. Le numéro 2 signifie le deuxième type, qui est le texte.
Excel choisira uniquement les valeurs de type text.
Le résultat.
Supprimer les lignes paires / impaires
Maintenant, supprimons uniquement les lignes paires.
Sub deleteEven()For Each Cell In Selection If Cell.Row Mod 2 = 0 Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub
Le code est très similaire à celui de l’exemple précédent. Il n’y a qu’une seule différence.
Cellule.Ligne Mod 2 = 0
Cela signifie, si le reste après la division est 0 (pour les nombres: 2, 4, 6, 8, …) alors le nombre est pair, si c’est 1 alors c’est un nombre impair (1, 3, 5, 6, …).
Tableur et passionné de Python.