Bonsoir,
Je sais qu'il existe déjà de nombreux sujets à ce propos mais je ne trouve pas de réponse qui me convienne.
Je cherche à écrire une fonction me permettant de retourner la dernière ligne non vide sachant qu'il est possible que les données de mon tableau soient filtrées.
Ma fonction est actuellement la suivante :
Mais si j'ai par exemple 100 lignes, et que les 5 dernières sont filtrées, cette fonction me retournera 95...
J'ai donc écrit la fonction suivante :
Mais comme vous l'imaginez... le temps d’exécution est beaucoup plus important !
J'avais pensé desactiver les filtres en faisant WS.Row(LigneFiltre).AutoFilter (x2 pour réactiver) mais après je perds le filtrage courant.
Auriez-vous une alternative ?
Merci !
Je sais qu'il existe déjà de nombreux sujets à ce propos mais je ne trouve pas de réponse qui me convienne.
Je cherche à écrire une fonction me permettant de retourner la dernière ligne non vide sachant qu'il est possible que les données de mon tableau soient filtrées.
Ma fonction est actuellement la suivante :
Code:
Function DerniereLigne(WS As Worksheet, ColTest As Integer) As Integer
'Ne fonctionne pas si la(les) dernière(s) ligne(s) est(sont) cachée(s)
DerniereLigne = WS.Cells(65536, ColTest).End(xlUp).Row
End Function
Mais si j'ai par exemple 100 lignes, et que les 5 dernières sont filtrées, cette fonction me retournera 95...
J'ai donc écrit la fonction suivante :
Code:
Function DerniereLigne(WS As Worksheet, ColTest As Integer) As Integer
Dim I As Long
For I = 65536 To 1 Step -1
If Len(WS.Cells(I, ColTest).Value) > 0 Then
Exit For
End If
Next I
DerniereLigne = I
End Function
Mais comme vous l'imaginez... le temps d’exécution est beaucoup plus important !
J'avais pensé desactiver les filtres en faisant WS.Row(LigneFiltre).AutoFilter (x2 pour réactiver) mais après je perds le filtrage courant.
Auriez-vous une alternative ?
Merci !