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.