Trouver la dernière ligne et colonne dans VBA

Glen Alfaro 30 janvier 2023
  1. Syntaxe du code
  2. Obtenir la dernière ligne/colonne avec des données dans la feuille de calcul en cours dans VBA
  3. Obtenir la dernière ligne/colonne avec les données d’une autre feuille de calcul dans VBA
  4. Obtenir la dernière ligne/colonne d’une feuille de calcul à l’aide d’une fonction
Trouver la dernière ligne et colonne dans VBA

Lorsque nous traitons des données dans une feuille de calcul, nous devons connaître la dernière ligne et la dernière colonne contenant des données. Il est utile de définir une limite où notre curseur peut itérer.

VBA n’a pas de fonction intégrée pour renvoyer la dernière ligne/colonne utilisée dans une feuille de calcul. Mais avec l’utilisation de solutions VBA simples, nous pouvons créer notre fonction définie par l’utilisateur conçue pour renvoyer la valeur de la dernière ligne/colonne utilisée dans une feuille de calcul.

Cet article explique comment rechercher la dernière ligne et la dernière colonne utilisées dans une feuille de calcul à l’aide d’Excel VBA.

Syntaxe du code

Code pour obtenir la dernière ligne :

Cells(Rows.Count,[colNum]).End(xlUp).Row

code pour obtenir la dernière colonne :

Cells(Rows.Count,[rowNum]).End(xlUp).Row

Où,

[colNum] Valeur entière de la colonne où se trouve la dernière ligne
[rowNum] Valeur entière de la ligne où se trouve la dernière colonne

Obtenir la dernière ligne/colonne avec des données dans la feuille de calcul en cours dans VBA

Le bloc de code ci-dessous doit être écrit sur la feuille de calcul cible sur Microsoft Excel Objects.

Sub GetLastRowCol()

'Declare lastRow and Last Col as Long datatype as we need to presume the values will be _
assigned with these variables are very high numbers.
Dim lastRow as Long
Dim lastCol as Long

'Assigning lastRow and lastCol variable
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Debug.Print "The last Row is: " & lastRow & vbNewline & "The last Column is :" & lastCol 
End Sub

Production :

The last Row is :1
The last Column is :1

Obtenir la dernière ligne/colonne avec les données d’une autre feuille de calcul dans VBA

Lorsque nous traitons plusieurs feuilles de calcul, nous devons attribuer explicitement la feuille de calcul dans laquelle nous nous trouvons actuellement.

Le bloc de code ci-dessous montrera comment obtenir la dernière ligne/colonne utilisée à partir d’une feuille de calcul différente.

Sub GetLastRowCol()

'Declare lastRow and Last Col as Long datatype as we need to presume the values will be _
assigned with these variables are very high numbers.
Dim lastRow as Long
Dim lastCol as Long

'Declaring workbook and worksheets
Dim wb as Workbook
Dim s1, s2 as Worksheet

'Initializing the wb, s1, and s2 objects.
Set wb = ThisWorkBook
Set s1 = wb.Sheets("Sheet1")
Set s2 = wb.Sheets("Sheet2")

'Will return the row number of the last row in Column A on Sheet1
lastRow = s1.Cells(s1.Rows.Count, 1).End(xlUp).Row
'Will return the row number of the last row in Row 1 on Sheet1
lastCol = s1.Cells(1, s1.Columns.Count).End(xlToLeft).Column

Debug.print "The last row in Sheet1:" & lastRow & vbNewline & "The last column in Sheet 1:" & lastCol

'Will return the row number of the last row in Column A on Sheet2
lastRow = s2.Cells(s2.Rows.Count, 1).End(xlUp).Row
'Will return the row number of the last row in Column A on Sheet2
lastCol = s2.Cells(1, s2.Columns.Count).End(xlToLeft).Column

Debug.print "The last row in Sheet2:" & lastRow & vbNewline & "The last column in Sheet 2:" & lastCol

End Sub

Production :

The last row in Sheet1: 1
The last column in Sheet1: 1
The last row in Sheet2: 1
The last column in Sheet2: 1

Obtenir la dernière ligne/colonne d’une feuille de calcul à l’aide d’une fonction

La fonction ci-dessous renverra la dernière ligne ou la dernière colonne en fonction de l’argument Worksheet.

Function GetLastRow(s As Worksheet) As Long
GetLastRow = s.Cells(s.Rows.Count, 1).End(xlUp).Row
End Function
Function GetLastCol(s As Worksheet) As Long
GetLastCol = s.Cells(1, s.Columns.Count).End(xlToLeft).Column
End Function

Sub testRow()
Dim wb As Workbook
Dim s1 As Worksheet

Set wb = ThisWorkbook
Set s1 = wb.Sheets("Sheet1")
Debug.Print GetLastRow(s1)
End Sub

Sub testCol()
Dim wb As Workbook
Dim s1 As Worksheet

Set wb = ThisWorkbook
Set s1 = wb.Sheets("Sheet1")
Debug.Print GetLastCol(s1)
End Sub

Sortie testRow :

1

Sortie testCol :

1

Article connexe - VBA Column