Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Dernière ligne non vide avec lignes masquées

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Darkyoup

XLDnaute Nouveau
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 :
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 !
 
Re : Dernière ligne non vide avec lignes masquées

Bonsoir,

Je te laisse tester et interpréter si cela peut convenir

Code:
Sub test()
ligne = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
MsgBox ligne
End Sub
 
Re : Dernière ligne non vide avec lignes masquées

Bonjour,

C'est parfait, j'utilise en plus une plage continue à partir de la première ligne et première colonne donc c'est une alternative qui me convient tout à fait :

Code:
Function DerniereLigne(WS As Worksheet) As Integer
    DerniereLigne = WS.UsedRange.Rows.Count
End Function

De même pour les colonnes :
Code:
Function DerniereColonne(WS As Worksheet) As Integer
    DerniereColonne = WS.UsedRange.Columns.Count
End Function

Merci pour cette astuce !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
281
Réponses
5
Affichages
232
Réponses
1
Affichages
520
Réponses
0
Affichages
459
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…