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

Trouver la dernière ligne d'une feuille

  • Initiateur de la discussion Initiateur de la discussion Hugues
  • Date de début Date de début

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 !

Hugues

XLDnaute Impliqué
Bonjour Le forum

Je souhaiterais connaitre le code VBA afin de connaître la dernière ligne dans une feuille sachant que je ne peux pas prendre comme référence une colonne précise.
Certaine fois la dernière donnée est dans la colonne A, d'autre fois en B, ... .
La dernière colonne pouvant être renseignée est la H.

Avez vous une idée sur le sujet ?

Merci par avance,

Hugues
 
Re : Trouver la dernière ligne d'une feuille

Bonjour.
Je m'oriente de plus en plus vers l'utilisation généralisée de cette fonction rendant un objet Range commençant à la cellule spécifiée. Elle n'englobe pas les lignes et colonnes ne comportant que des chaînes vides. Elle rend Nothing si aucune cellule n'est renseignée davantage.
VB:
Function PlageÀPartirDe(ByVal PlageDép As Range) As Range
Dim F As Worksheet, NbL As Long, NbC As Long, V As Variant, N As Long
Set F = PlageDép.Worksheet
With F.UsedRange: NbL = .Row + .Rows.Count - PlageDép.Row
   NbC = .Column + .Columns.Count - PlageDép.Column: End With
    If NbC < 1 Then GoTo CEstToutVide
Do: If NbL < 1 Then GoTo CEstToutVide
   V = PlageDép.Item(NbL, 1).Resize(, NbC).Value
   For N = 1 To NbC: If V(1, N) <> "" Then Exit Do
      Next N
   NbL = NbL - 1: Loop
Do: V = PlageDép.Item(1, NbC).Resize(NbL).Value
   For N = 1 To NbL: If V(N, 1) <> "" Then Exit Do
      Next N: If NbC = 1 Then GoTo CEstToutVide
   NbC = NbC - 1: Loop
Set PlageÀPartirDe = PlageDép.Resize(NbL, NbC)
Exit Function
CEstToutVide: Set PlageÀPartirDe = Nothing
End Function
Cordialement.
 
Re : Trouver la dernière ligne d'une feuille

Bonjour Hugues, Dranreb,
Une proposition:
VB:
Sub Test4()
Dim X As Long, LstRow As Long
For i = 1 To 8
    X = Sheets("Feuil2").Cells(Rows.Count, i).End(xlUp).Row
    If X > LstRow Then LstRow = X
Next i
MsgBox LstRow
End Sub
Cordialement
 
Re : Trouver la dernière ligne d'une feuille

Pour connaître simplement la dernière ligne avec ma solution c'est, bien sûr:
VB:
With PlageÀPartirDe(Feuil1.[B2]): LstRow = .Row + .Rows.Count - 1: End With
Remarque: ma solution ne recherche pas systématiquement depuis la ligne 65536 une cellule renseignée et ce dans plusieurs colonnes. Avec un peu de chances elle se termine tout de suite s'il ne traine pas de bordures au delà de la partie qu'on veut. De plus, elle écarterait de la plage rendue les lignes qui ne contiendraient que des formules rendant des chaînes vides.
À+
 
Dernière édition:
Re : Trouver la dernière ligne d'une feuille

laetitia90,
je dois dire que l'idée est interessante, surtout si on prend UsedRange plutôt que Cells.
Mais je ne comprend pas bien pourquoi What:="*" ne s'arrête pas sur les cellules renseignées d'une chaine vide. "*"ça veut bien dire n'importe quoi non ?
Par ailleurs extrait de l'aide: Quelle sont donc les valeurs de la boîte à appliquer et donc à préciser ?
Mais il y a quelque chances que je base ma prochaine version de ma PlageÀPartirDe sur ce Find, bien qu'il ne fournisse pas directement la dernière colonne.
À+
 
Re : Trouver la dernière ligne d'une feuille

Bonjour à tous,

perso j'utilise ceci, en renseignant les différents arguments de la méthode :
Code:
MsgBox = Cells.Find("*", Range("IV65536"), xlValues, , 1, 2, 0).Row

bonne journée
@+
 
Re : Trouver la dernière ligne d'une feuille

rebonjour Pierrot🙂🙂
si tu l'ecris comme cela tu te limites a excel 2003
Code:
MsgBox Cells.Find("*", Range("IV65536"), xlValues, , 1, 2, 0).Row
de plus je crois pas que cela tiens compte des cellules vide par formule a voir
pour l'ami Dranreb j'ai pas de reponse sorry🙁🙁
 
Re : Trouver la dernière ligne d'une feuille

Re,
@Laetitia🙂🙂

compatible 2007 :
Code:
With Application
    MsgBox Cells.Find("*", Cells(.Rows.Count, .Columns.Count), xlValues, , 1, 2, 0).Row
End With

si formule ne renvoie rien dans la cellule, "find" ne renverra pas le numéro de la ligne en question....
 
Re : Trouver la dernière ligne d'une feuille

Re,

A noter si tu veux tout de même le numéro de la dernière ligne comportant une forumule ne renvoyant rien, il faut changer l'argument "lookin" :
Code:
With Application
    MsgBox Cells.Find("*", Cells(.Rows.Count, .Columns.Count),  xlFormulas, , 1, 2, 0).Row
End With
 
Re : Trouver la dernière ligne d'une feuille

Bonjour,

Moi j'utilise ceci

Code:
     i = 1
    Do While (Sheets("Feuil2").Cells(i, 3) <> "")
    i = i + 1
   Loop

i représente le numéro de la 1er ligne vide et dans ce cas ci à la 3em colonne

Tu peux effectuer la même chose pour d'autres colonne et tu gardes le i le plus grand.

Cordialement
 
Re : Trouver la dernière ligne d'une feuille

Re
Cette foi j'ai bien vérifié...😱
VB:
Sub Derniere_ligne()
Dim LstRw As Long, LstCol As Long, LstCel As String
With Sheets("Feuil1")
    LstRw = .Cells.Find("*", Cells(Rows.Count, Columns.Count), xlValues, , 1, 2, 0).Row
    LstCol = .Cells.Find("*", Cells(Rows.Count, Columns.Count), xlValues, , 2, 2, 0).Column
    LstCel = .Cells(LstRw, LstCol).Address
End With
MsgBox "Ligne: " & LstRw & vbLf & _
        "Colonne: " & LstCol & vbLf & _
        "Addresse: " & LstCel
End Sub
A noter, comme l'a dit Pierrot, qu'il suffit de changer xlValues par xlFormulas pour prendre en compte les formules.
Cordialement
 
Re : Trouver la dernière ligne d'une feuille

rebonjour tous
bravo Pierrot trop trop fort 🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂

ps: l'ami efgé nous a fait une belle construction j'aime bien 🙂🙂🙂
 
Dernière édition:
- 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
40
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…