Trouver la dernière ligne
Un tableau grossit chaque mois : la macro doit trouver seule où il s'arrête. Cette ligne de code est sans doute la plus recopiée de tout le VBA, et elle mérite d'être bien comprise.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Définition
Pour trouver la dernière ligne remplie, on part tout en bas de la feuille et on remonte jusqu'à la première cellule non vide, exactement comme Ctrl + Flèche haut.
derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row| Morceau | Signification |
|---|---|
| Rows.Count | le nombre de lignes de la feuille (1 048 576) |
| Cells(Rows.Count, 1) | la toute dernière cellule de la colonne A |
| .End(xlUp) | remonter jusqu'à une cellule remplie |
| .Row | le numéro de ligne de cette cellule |
02Les variantes utiles
' Dernière colonne remplie de la ligne 1 derniereColonne = Cells(1, Columns.Count).End(xlToLeft).Column ' Première ligne libre, pour ajouter une donnée ligneLibre = Cells(Rows.Count, 1).End(xlUp).Row + 1 ' Sur une feuille précise, sans dépendre de la feuille active With Worksheets("Ventes") derniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row End With
Prenez une colonne toujours remplie, comme un identifiant ou une date. Si la colonne testée a des trous en bas du tableau, le résultat sera trop court.
03Les autres méthodes
| Méthode | Avantage | Limite |
|---|---|---|
| End(xlUp) | fiable, la plus utilisée | ne regarde qu'une colonne |
| End(xlDown) | part du haut | s'arrête à la première cellule vide |
| UsedRange | toute la zone utilisée | compte aussi les cellules seulement mises en forme |
| CurrentRegion | le bloc autour d'une cellule | s'arrête à la première ligne ou colonne vide |
| ListObject | tableau structuré, toujours juste | nécessite un tableau (Ctrl + T) |
Dim t As ListObject Set t = Worksheets("Ventes").ListObjects("tblVentes") MsgBox t.ListRows.Count & " lignes de données"
04Pièges à éviter
Si la colonne est vide, End(xlUp) remonte jusqu'en ligne 1 et renvoie 1. Testez ce cas avant de lancer une boucle à partir de la ligne 2.
Sur une feuille filtrée, les lignes masquées peuvent fausser le résultat. Retirez le filtre avant le calcul, ou travaillez avec un tableau structuré.
Range("A1").End(xlDown) s'arrête au premier trou dans les données. Partir du bas est plus sûr.
05Questions fréquentes
Comment trouver la dernière ligne remplie en VBA ?
Pour trouver la dernière ligne remplie, on part tout en bas de la feuille et on remonte jusqu'à la première cellule non vide, exactement comme Ctrl + Flèche haut.
Quel est le piège le plus fréquent avec la recherche de la dernière ligne ?
Une feuille vide. Si la colonne est vide, End(xlUp) remonte jusqu'en ligne 1 et renvoie 1. Testez ce cas avant de lancer une boucle à partir de la ligne 2.
La fiche « Trouver la dernière ligne » est-elle gratuite ?
Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.
Passez de la fiche à la mise en situation
Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.
Découvrir l'étude de cas XL-05Toutes les fiches du cours VBA gratuit
Voir aussi le cours gratuit sur les formules Excel
Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA