Supprimer des lignes et des colonnes dans Excel, Excel VBA

Supprimer des lignes et des colonnes dans Excel, Excel VBA

Voici un code VBA détaillé pour supprimer des lignes et des colonnes dans Excel, accompagné d’une explication approfondie.
Code VBA : Supprimer des Lignes et Colonnes dans Excel

Sub DeleteRowsAndColumns()
    Dim ws As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim i As Long, j As Long
    ' Définir la feuille de travail
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez le nom de la feuille si nécessaire
    ' Trouver la dernière ligne avec des données
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ' Trouver la dernière colonne avec des données
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    ' Supprimer les lignes où la première colonne (A) est vide
    For i = lastRow To 1 Step -1 ' Boucle de la dernière ligne à la première (évite les problèmes de décalage)
        If IsEmpty(ws.Cells(i, 1)) Then
            ws.Rows(i).Delete
        End If
    Next i
    ' Supprimer les colonnes où la première ligne est vide
    For j = lastCol To 1 Step -1 ' Boucle de la dernière colonne à la première (évite les problèmes de décalage)
        If IsEmpty(ws.Cells(1, j)) Then
            ws.Columns(j).Delete
        End If
    Next j
    ' Nettoyage
    Set ws = Nothing
End Sub

Explication Détaillée
1. Définir la Feuille de Travail
Set ws = ThisWorkbook.Sheets("Sheet1")

  • Ici, nous définissons la feuille sur laquelle l’opération va se dérouler.
  • Vous pouvez remplacer "Sheet1" par le nom réel de votre feuille.

2. Trouver la Dernière Ligne avec des Données
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

  • ws.Rows.Count retourne le nombre total de lignes (généralement 1 048 576 dans Excel moderne).
  • End(xlUp) remonte depuis la dernière ligne de la colonne A pour trouver la dernière cellule non vide.
  • Cela nous aide à déterminer où les données s’arrêtent.

3. Trouver la Dernière Colonne avec des Données
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

  • ws.Columns.Count retourne le nombre total de colonnes (généralement 16 384 dans Excel).
  • End(xlToLeft) déplace la sélection vers la gauche à partir de la dernière colonne de la ligne 1 pour trouver la dernière cellule non vide.
  • Cela nous aide à déterminer où les données s’arrêtent horizontalement.

4. Supprimer les Lignes où la Colonne A est Vide

For i = lastRow To 1 Step -1
    If IsEmpty(ws.Cells(i, 1)) Then
        ws.Rows(i).Delete
    End If
Next i
  • La boucle commence de la dernière ligne et se déplace vers le haut (Step -1).
  • IsEmpty(ws.Cells(i, 1)) vérifie si la cellule de la colonne A est vide.
  • Si la condition est remplie, la ligne entière est supprimée.
  • La boucle inverse permet d’éviter des problèmes de décalage lors de la suppression de lignes.

5. Supprimer les Colonnes où la Ligne 1 est Vide

For j = lastCol To 1 Step -1
    If IsEmpty(ws.Cells(1, j)) Then
        ws.Columns(j).Delete
    End If
Next j
  • La boucle commence de la dernière colonne et se déplace vers la gauche.
  • IsEmpty(ws.Cells(1, j)) vérifie si la cellule de la ligne 1 est vide.
  • Si c’est vrai, la colonne entière est supprimée.
  • La boucle inverse permet d’éviter des erreurs dues au décalage des colonnes.

6. Nettoyage
Set ws = Nothing

  • Cette ligne libère l’objet ws de la mémoire pour optimiser les performances.

Fonctionnalités Clés
Supprime les lignes vides en fonction de la colonne A.
Supprime les colonnes vides en fonction de la ligne 1.
Utilise des boucles inversées pour éviter les problèmes de décalage.
Fonctionne de manière dynamique en détectant la dernière ligne/colonne utilisée.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x