Supprimer les lignes et colonnes à l’aide VBA dans Microsoft Excel
Il peut arriver que nous devions supprimer des lignes ou des colonnes vides d’un fichier dans Excel pour la boucle, nous écrirons une macro / code vba. Le code que nous devons utiliser varie d’une situation à l’autre. Parfois, nous pouvons avoir à supprimer une ligne ou une colonne, tandis que parfois nous devons supprimer une plage entière de lignes ou de colonnes ou parfois des lignes / colonnes en fonction d’une ou plusieurs conditions.
Si vous devez supprimer une ou plusieurs lignes ou colonnes spécifiques, nous utilisons VBA excel for loop et vous pouvez simplement utiliser le code suivant – _Option Explicit Sub macro1 ()
Application.DisplayAlerts = False avec des feuilles de calcul (« Sheet1 »)
Application.DisplayAlerts = False
Nous définissons les alertes d’affichage sur false et enregistrons le fichier avec le nom de fichier requis. Et puis définissez les alertes d’affichage sur true juste avant le sous-marin final.
With Worksheets («Sheet1») est une boucle With qui se termine par End With.
Si vous utilisez cette boucle for VBA Excel, toutes les instructions à l’intérieur de cette boucle, qui utilisent cet objet, n’ont pas besoin de commencer par «Worksheets (« Sheet1 »)». Au lieu de cela, ils peuvent commencer directement par un simple point (.).
.Rows («5: 6»). Delete supprimera uniquement les lignes 5 et 6.
Seules les lignes / colonnes spécifiées seront supprimées dans ce cas.
Cependant, vous devrez parfois supprimer des lignes / colonnes en fonction de certaines conditions. Par exemple Supposons que nous souhaitons supprimer toutes les colonnes du fichier contenant «Test» comme en-tête. Dans ce cas, nous avons besoin d’une boucle qui vérifiera d’une colonne à l’autre et lorsque les critères seront remplis, elle supprimera la colonne.
Nous pouvons utiliser un code comme celui-ci. Notez que chaque personne préparera le code de la manière avec laquelle il / elle est à l’aise. Ce n’est qu’une des façons dont cela peut être codé et ce n’est pas la seule méthode.
_Option sous-macro explicite 2 ()
Dim i As Long, lcol As Long Application.DisplayAlerts = False With Worksheets («Sheet1»)
lcol = .Range (« A1 »). End (xlToRight) .Column For i = lcol to 1 Step -1 If .Cells (1, i) .Value = « » Then Exit For If .Cells (1, i). value = « Test » Then .Columns (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ Voir le code qui a été enregistré dans le module 1 selon l’image ci-dessous
Ici, lcol est la dernière colonne de la feuille qui contient des données. Si vous testez ce code sur un fichier vierge, lcol aura la valeur 16384 ou le numéro de colonne de la dernière colonne selon votre version d’Excel. Ensuite, nous bouclons de la dernière colonne à la première colonne, en reculant d’un pas à chaque fois. Nous reculons car le code de suppression ne fonctionne correctement que lorsque vous commencez à supprimer à partir de la dernière ligne ou de la dernière colonne. Si vous commencez à partir de la 1 ^ st ^ ligne / colonne, le code a tendance à générer une erreur.
La condition 1 ^ st ^ if y est entrée au cas où vous exécuteriez la macro sur un fichier vide. Dans Excel, la macro boucle de la dernière colonne qui est 16384 dans ce cas jusqu’à la colonne 1 et cela peut prendre un temps assez long. Donc, si le code trouve une colonne vide, il terminera la boucle immédiatement via l’instruction exit For. La condition 2 ^ nd ^ if vérifie si la valeur est «Test» et supprime la colonne si «Test» est trouvé.
Si vous souhaitez supprimer les lignes au lieu de colonnes, le code deviendra – _Option Explicit Sub macro3 ()
Dim i As Long, lrow As Long Application.DisplayAlerts = False With Worksheets («Sheet1»)
lrow = .range (« A » & .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Step -1 If .Cells (i, 1) .Value = « » Then Exit For If .Cells ( i, 1) .Value = « Test » Then .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ Voir le code ci-dessous –
Vous auriez observé que la .Cells (1, i) .value change en .Cells (i, 1) .value dans le code ci-dessus. Cela se produit parce que dans le premier code, nous supprimions des colonnes, donc la variable «i» devait parcourir les colonnes, tandis que dans le code 2 ^ nd ^, elle devait parcourir les lignes. Ici, nous allons faire une boucle de la dernière ligne à la 2 ^ nd ^ ligne, car la 1 ^ st ^ ligne contient des en-têtes qui doivent être conservés.
Conformément à l’exigence de code, vous pouvez même fusionner les lignes de suppression et le code de suppression des colonnes en 1 code. Vous pouvez même définir plusieurs conditions en fonction desquelles la ligne / colonne doit être supprimée. Considérez, nous voulons supprimer toutes les lignes où la 1 ^ st ^ colonne contient du texte tel que Test ou Dummy, alors le code sera comme ceci – _Option Explicit Sub macro4 ()
Dim i As Long, lrow As Long Application.DisplayAlerts = False With Worksheets («Sheet1»)
lrow = .range (« A » & .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Step -1 If .Cells (i, 1) .Value = « » Then Exit For If .Cells ( i, 1) .Value = « Test » Ou .Cells (i, 1) .Value = « Dummy » Then .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_
De même, vous pouvez ajouter à ce code ou au code que vous avez en fonction de l’exigence. Vous pouvez ajouter plusieurs conditions pour les lignes et même pour les colonnes.