Navigation dans les Feuilles de Calcul
Glissez pour afficher le menu
Les données réelles ne comportent pas d'étiquette indiquant où elles se terminent. Coder en dur Range("A1:I5") pose problème dès qu'une sixième commande est ajoutée — il faut donc demander à la feuille où se termine ses données.
Recherche de la dernière ligne
La ligne de code la plus utilisée dans tout ce cours :
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
À lire de droite à gauche : commencer tout en bas de la colonne A (ws.Rows.Count), remonter (End(xlUp)) jusqu'à la première cellule occupée, puis retourner son numéro de ligne. Cette méthode fonctionne quel que soit le nombre de commandes existantes.
Recherche de la dernière colonne
Fonctionne de la même manière, mais horizontalement :
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Indique la zone rectangulaire complète de la feuille qui a déjà contenu des données — utile pour une vérification rapide, mais à utiliser avec prudence : il se souvient des cellules qui contenaient des données même après suppression de leur contenu, ce qui peut surestimer la plage de données réelle.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Généralement l’outil le plus adapté : il s’étend à partir d’une seule cellule vers le bloc de données contigu autour d’elle, s’arrêtant à la première ligne ou colonne vide — correspondant exactement à une table propre comme Orders :
Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1 ' 5 — subtract 1 to exclude the header
Exercice
- Écrire une
Subqui trouve la dernière ligne en utilisant la méthodeEnd(xlUp)et l’affiche dans la fenêtre Exécution. - Dans la même
Sub, trouver la dernière ligne d’une seconde manière avecCurrentRegion.Rows.Count, et l’afficher également — vérifier qu’elles correspondent. - Ajouter manuellement une sixième commande à la ligne 7 de la feuille, relancer la macro, et confirmer que les deux méthodes indiquent maintenant 7 sans modification du code :
1. Recherche de la dernière ligne avec End(xlUp)
- Départ depuis le bas de la colonne A et remontée — le même schéma que dans la section « Recherche de la dernière ligne » du chapitre 3.
Debug.Printdu résultat pour l’afficher dans la fenêtre Exécution immédiate (Ctrl+G).
2. Deuxième méthode avec CurrentRegion
CurrentRegions’étend à partir d’une seule cellule de départ (essayezRange("A1")) jusqu’au bloc contigu complet..Rows.Countsur cette région inclut la ligne d’en-tête — se référer à la remarque du chapitre concernant la soustraction de 1 si seules les lignes de données sont souhaitées. Comme cette tâche demande simplement de comparer les deux méthodes, affichez d’abord le nombre brut puis raisonnez sur l’en-tête ensuite.
3. Ajouter une sixième ligne et relancer
- Aucun changement de code nécessaire — il suffit de saisir une nouvelle commande directement à la ligne 7 de la feuille, puis d’exécuter exactement la même
Subà nouveau.
Sub CompareLastRowMethods()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
Dim lastRowMethod1 As Long
lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Debug.Print "End(xlUp): " & lastRowMethod1
Dim lastRowMethod2 As Long
lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Navigation dans les Feuilles de Calcul
Les données réelles ne comportent pas d'étiquette indiquant où elles se terminent. Coder en dur Range("A1:I5") pose problème dès qu'une sixième commande est ajoutée — il faut donc demander à la feuille où se termine ses données.
Recherche de la dernière ligne
La ligne de code la plus utilisée dans tout ce cours :
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
À lire de droite à gauche : commencer tout en bas de la colonne A (ws.Rows.Count), remonter (End(xlUp)) jusqu'à la première cellule occupée, puis retourner son numéro de ligne. Cette méthode fonctionne quel que soit le nombre de commandes existantes.
Recherche de la dernière colonne
Fonctionne de la même manière, mais horizontalement :
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Indique la zone rectangulaire complète de la feuille qui a déjà contenu des données — utile pour une vérification rapide, mais à utiliser avec prudence : il se souvient des cellules qui contenaient des données même après suppression de leur contenu, ce qui peut surestimer la plage de données réelle.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Généralement l’outil le plus adapté : il s’étend à partir d’une seule cellule vers le bloc de données contigu autour d’elle, s’arrêtant à la première ligne ou colonne vide — correspondant exactement à une table propre comme Orders :
Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1 ' 5 — subtract 1 to exclude the header
Exercice
- Écrire une
Subqui trouve la dernière ligne en utilisant la méthodeEnd(xlUp)et l’affiche dans la fenêtre Exécution. - Dans la même
Sub, trouver la dernière ligne d’une seconde manière avecCurrentRegion.Rows.Count, et l’afficher également — vérifier qu’elles correspondent. - Ajouter manuellement une sixième commande à la ligne 7 de la feuille, relancer la macro, et confirmer que les deux méthodes indiquent maintenant 7 sans modification du code :
1. Recherche de la dernière ligne avec End(xlUp)
- Départ depuis le bas de la colonne A et remontée — le même schéma que dans la section « Recherche de la dernière ligne » du chapitre 3.
Debug.Printdu résultat pour l’afficher dans la fenêtre Exécution immédiate (Ctrl+G).
2. Deuxième méthode avec CurrentRegion
CurrentRegions’étend à partir d’une seule cellule de départ (essayezRange("A1")) jusqu’au bloc contigu complet..Rows.Countsur cette région inclut la ligne d’en-tête — se référer à la remarque du chapitre concernant la soustraction de 1 si seules les lignes de données sont souhaitées. Comme cette tâche demande simplement de comparer les deux méthodes, affichez d’abord le nombre brut puis raisonnez sur l’en-tête ensuite.
3. Ajouter une sixième ligne et relancer
- Aucun changement de code nécessaire — il suffit de saisir une nouvelle commande directement à la ligne 7 de la feuille, puis d’exécuter exactement la même
Subà nouveau.
Sub CompareLastRowMethods()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
Dim lastRowMethod1 As Long
lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Debug.Print "End(xlUp): " & lastRowMethod1
Dim lastRowMethod2 As Long
lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Merci pour vos commentaires !