197 votes

Erreur lors de la recherche de la dernière cellule utilisée dans Excel avec VBA

Lorsque je veux trouver la dernière valeur de cellule utilisée, j'utilise :

Dim LastRow As Long

LastRow = Range("E4:E48").End(xlDown).Row

Debug.Print LastRow

J'obtiens la mauvaise sortie quand je mets un seul élément dans une cellule. Mais quand je mets plus d'une valeur dans la cellule, la sortie est correcte. Quelle est la raison derrière tout ça ?

12voto

Bishop Points 121

Une remarque importante à garder à l'esprit lors de l'utilisation de la solution ...

LastRow = ws.Cells.Find(What:="*", After:=ws.range("a1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

... est de s'assurer que votre variable LastRow est de type Long :

Dim LastRow as Long

Sinon, vous finirez par obtenir des erreurs DE DÉBORDEMENT dans certaines situations dans les classeurs .XLSX

C'est ma fonction encapsulée que je dépose dans diverses utilisations de code.

Private Function FindLastRow(ws As Worksheet) As Long
    ' --------------------------------------------------------------------------------
    ' Find the last used Row on a Worksheet
    ' --------------------------------------------------------------------------------
    If WorksheetFunction.CountA(ws.Cells) > 0 Then
        ' Search for any entry, by searching backwards by Rows.
        FindLastRow = ws.Cells.Find(What:="*", After:=ws.range("a1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    End If
End Function

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X