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 !