Accueil/Cours gratuits/Bibliothèque VBA/Objets Excel/Trouver la dernière ligne
Cours VBA gratuit | Objets Excel

Trouver la dernière ligne

Gratuit, sans inscription Niveau 2 / 3 | Intermédiaire Lecture 6 min V1.2 | 29/10/2026

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 à imprimer

01Définition

En une phrase

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.

La formule à connaître par cœur
derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
MorceauSignification
Rows.Countle 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
.Rowle numéro de ligne de cette cellule

02Les variantes utiles

Dernière colonne, première ligne libre, feuille précise
' 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
💡 AstuceChoisir la bonne colonne

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éthodeAvantageLimite
End(xlUp)fiable, la plus utiliséene regarde qu'une colonne
End(xlDown)part du hauts'arrête à la première cellule vide
UsedRangetoute la zone utiliséecompte aussi les cellules seulement mises en forme
CurrentRegionle bloc autour d'une cellules'arrête à la première ligne ou colonne vide
ListObjecttableau structuré, toujours justenécessite un tableau (Ctrl + T)
Avec un tableau structuré
Dim t As ListObject
Set t = Worksheets("Ventes").ListObjects("tblVentes")
MsgBox t.ListRows.Count & " lignes de données"

04Pièges à éviter

⚠️ PiègeUne 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.

⚠️ PiègeLes filtres actifs

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é.

⚠️ PiègePartir du haut

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.

Pour les formateurs

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-05
Voir aussi

Toutes 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