Bonjour,
Pour déterminer la première ligne (ou la dernière) d'une plage, je combine CountA et la méthode find, comme ceci :
Option Explicit
Sub Macro1()
Dim DLig As Long, PLig As Long
DLig = DerniereLigne(Columns(1))
PLig = PremiereLigne(Columns(1))
MsgBox "La plage " & Columns(1).Address & vbCrLf & "a pour première ligne : " & PLig _
& vbCrLf & "et pour dernière ligne : " & DLig
End Sub
Private Function PremiereLigne(plage As Range) As Long
'cas d'absence de données dans la plage à traiter :
If WorksheetFunction.CountA(plage) = 0 Then PremiereLigne = plage.Cells(1, 1).Row: Exit Function
'dans tous les autres cas :
PremiereLigne = plage.Find("*", , , , , xlNext).Row
End Function
Private Function DerniereLigne(plage As Range) As Long
'cas d'absence de données dans la plage à traiter :
If WorksheetFunction.CountA(plage) = 0 Then DerniereLigne = plage.Cells(1, 1).Row: Exit Function
'dans tous les autres cas :
DerniereLigne = plage.Find("*", , , , , xlPrevious).Row
End Function