Trouver la dernière ligne contenant des données, Excel VBA
Voici une explication détaillée et un exemple de code pour trouver la dernière ligne contenant des données dans Excel à l’aide de VBA (Visual Basic for Applications).
Objectif :
L’objectif est d’identifier la dernière ligne d’une feuille de calcul qui contient des données, peu importe si les données se trouvent dans la colonne A, B, ou toute autre colonne.
Exemple de code : Trouver la dernière ligne avec VBA
Sub TrouverDernièreLigne() Dim ws As Worksheet Dim dernièreLigne As Long ' Définir l'objet worksheet (vous pouvez spécifier le nom de la feuille ici) Set ws = ThisWorkbook.Sheets("Feuil1") ' Méthode 1 : Utilisation de Cells avec xlUp (plus fiable) dernièreLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Afficher la dernière ligne dans la fenêtre Immediate (Ctrl + G pour la voir) Debug.Print "Dernière ligne avec des données dans la colonne A : " & dernièreLigne ' Vous pouvez aussi utiliser cette valeur pour d'autres traitements, par exemple, sélectionner ou surligner la dernière ligne ws.Rows(dernièreLigne).Select End Sub
Explication :
1. Déclaration des variables :
- ws est une variable de type Worksheet. Nous l’utilisons pour faire référence à la feuille de calcul où nous voulons trouver la dernière ligne.
- dernièreLigne est une variable de type Long qui stockera le numéro de la dernière ligne contenant des données.
2. Définir la feuille de calcul :
Set ws = ThisWorkbook.Sheets("Feuil1")
Cette ligne définit la variable ws pour faire référence à la feuille de calcul nommée « Feuil1 ». Vous pouvez remplacer « Feuil1 » par le nom de la feuille sur laquelle vous travaillez.
3. Trouver la dernière ligne :
dernièreLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
C’est la partie clé du code. Voyons cela en détail :
- ws.Cells : Cela fait référence à toutes les cellules de la feuille de calcul ws.
- ws.Rows.Count : Cela donne le nombre total de lignes disponibles dans la feuille de calcul (dans la plupart des versions d’Excel, il y a 1 048 576 lignes).
- « A » : Nous vérifions ici la colonne A. Vous pouvez changer la lettre de la colonne pour une autre colonne si vos données se trouvent ailleurs.
- .End(xlUp) : Cela équivaut à appuyer sur Ctrl + ↑ dans Excel. Cette commande part du bas de la feuille (dernière ligne) et remonte jusqu’à ce qu’elle trouve une cellule non vide. Cela permet de trouver la dernière ligne utilisée dans la colonne.
- .Row : Cela retourne le numéro de la ligne de la cellule trouvée par la méthode .End(xlUp).
Pourquoi utiliser xlUp plutôt que xlDown ou d’autres méthodes ?
- xlUp est généralement plus fiable que xlDown. Si des lignes vides se trouvent après la dernière ligne avec des données, l’utilisation de xlDown donnerait des résultats incorrects, car il considérerait la première ligne vide comme « la dernière ligne ». xlUp, en revanche, part du bas de la feuille et garantit que nous trouvons la dernière ligne non vide.
4. Affichage dans la fenêtre Immediate :
Debug.Print "Dernière ligne avec des données dans la colonne A : " & dernièreLigne
Cette ligne affiche la valeur de dernièreLigne dans la fenêtre Immediate (accessible avec Ctrl + G). Cela est utile pour le débogage et pour vérifier le résultat. Vous pouvez supprimer cette ligne si vous n’avez pas besoin de l’affichage.
5. Sélectionner la dernière ligne :
ws.Rows(dernièreLigne).Select
Cette ligne sélectionne toute la dernière ligne contenant des données. C’est une ligne optionnelle, mais vous pouvez l’utiliser pour surligner la ligne dans Excel afin d’effectuer des actions supplémentaires.
Méthode alternative : Utilisation de UsedRange
Une autre façon de trouver la dernière ligne est d’utiliser la propriété UsedRange, qui donne la plage de cellules ayant déjà contenu des données. Bien que cela puisse fonctionner, ce n’est pas toujours fiable (par exemple, si des lignes ont été supprimées ou si des données sont éparpillées).
Sub TrouverDernièreLigneAvecUsedRange() Dim ws As Worksheet Dim dernièreLigne As Long ' Définir l'objet worksheet (vous pouvez spécifier le nom de la feuille ici) Set ws = ThisWorkbook.Sheets("Feuil1") ' Méthode 2 : Utilisation de UsedRange (peut ne pas être fiable dans certains cas) dernièreLigne = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row ' Affichage dans la fenêtre Immediate Debug.Print "Dernière ligne avec des données (en utilisant UsedRange) : " & dernièreLigne End Sub
Remarque : La propriété UsedRange
renvoie la plage de cellules qui ont jamais contenu des données, donc si vous avez déjà supprimé des lignes ou des colonnes, cela peut inclure ces cellules dans la plage « utilisée », ce qui peut donner des résultats incorrects.
Quand utiliser chaque méthode :
- Utilisez xlUp à partir de la dernière ligne lorsque vous voulez un résultat fiable, surtout si vos données peuvent contenir des trous ou des lignes vides.
- Utilisez UsedRange si vous travaillez sur une petite feuille et êtes sûr qu’il n’y a pas de lignes vides, ou si vous avez besoin de la plage de toutes les cellules ayant contenu des données, même si elles ont été effacées.
Conclusion :
La méthode de recherche de la dernière ligne avec .End(xlUp) est la plus fiable, surtout lorsque vous travaillez avec des données qui peuvent ne pas remplir toutes les lignes de manière continue. Elle est rapide et efficace, et une fois que vous avez compris son fonctionnement, elle deviendra un outil essentiel dans votre boîte à outils VBA pour gérer des données dans Excel.