[Macro] Dernière ligne non vide d'un tableau

Flow

XLDnaute Nouveau
Bonjour à tous,

J'ai une macro qui fonctionne à merveille sauf pour un point.
Pour faire simple, mon fichier excel contient un tableau, et je souhaite connaitre le numéro de la ligne de la dernière cellule non vide.
Cependant, la formule suivante que j'utilise me retourne la dernière ligne du tableau et non, la drnière ligne non vide du tableau : DerniereLigneSaisie = Range("B10").End(xlDown).Row

Par exemple : mon tableau est sur la plage B10:D20, uniquement les 3 premières lignes du tableau sont remplies, et la formule me retourne 20, alors que je souhaiterai qu'elle me retourne 13.

Auriez-vous une idée pour résoudre cela ?

Merci par avance
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : [Macro] Dernière ligne non vide d'un tableau

Bonjour Flow, bonjour le forum,

Tes cellules de la plage B10:B20 contiennent-elles des formules ou bien les édites-tu toi-même, en dur ?
En pièce jointe un petit fichier exemple. Regarde la différence entre les deux onglets ou le premier est avec des formules et l'autre pas.
Sinon ton fichier en pièce jointe pour qu'on puisse t'aider...
 

Pièces jointes

  • Flow_v01.xls
    30.5 KB · Affichages: 75

Flow

XLDnaute Nouveau
Re : [Macro] Dernière ligne non vide d'un tableau

Malheureusement, je ne peux joindre le fichier.
Je les édite moi-même (saisie manuelle). Et quand je parle de tableau, je parle d'un tableau mis en forme (couleur, typo, etc.) (j'ai l'onglet "outils de tableau>création" qui s'affiche dans le bandeau)

Une remarque complémentaire que je viens de remarquer :
- lorsque uniquement la 1ère ligne du tableau est saisie => valeur : 20 (nb ligne dans le tableau) (NOK)
- lorsque je saisie la 1ere ligne et la 4eme => valeur : 4 (OK !!!)

Etrange non ?
Il n'y aurait pas qqc qui traine dans mon tableau ???
 

camarchepas

XLDnaute Barbatruc
Re : [Macro] Dernière ligne non vide d'un tableau

Bonjour Flow,

essaye ceci mise en fonction .

l'appel se fait ainsi

Derligne = cherchedernièreLigne(thisworkbook, "Feuil1")

Code:
Public Function ChercheDernièreLigne(Classeur As Workbook, NomFeuille As String) As Long
Dim DernièreLigne As Long
    
    If Classeur.Application.WorksheetFunction.CountA(Classeur.Worksheets(NomFeuille).Cells) > 0 Then
        DernièreLigne = Classeur.Worksheets(NomFeuille).Cells.Find(what:="*", after:=Classeur.Worksheets(NomFeuille).Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    End If
    ChercheDernièreLigne = DernièreLigne
End Function
 

Discussions similaires

Statistiques des forums

Discussions
312 524
Messages
2 089 322
Membres
104 119
dernier inscrit
karbone57