IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Trouver la derniere ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut Trouver la derniere ligne
    Bonjour,

    J'ai du mal a comprendre pourquoi je n'arrive pas a trouver tj la derniere ligne avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.SpecialCells(xlLastCell).Select
    lastligne = ActiveCell.Row
    Le resultat n'est pas identique suivant les feuilles (voir fichier attache entre sheet1 et sheet2) l'active cell n'est pas au meme endroit, il y a une ligne de difference, pourquoi ? et comment trouver a coup sur la derniere ligne ?

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    En effet, xlLastCell donne la dernière ligne de ta plage de donnée après enregistrement du fichier.
    Si tu supprimes une ligne sans enregistrer le classeur ensuite, tu as une ligne de trop.
    Regarde ici les diverses méthode que tu peux utiliser, il y en aura certainement une qui te conviendra

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    Re-Bonjour,

    Je ne comprends tj pas, et je n'arrive pas a obtenir la derniere ligne, avec la simple commande "Ctrl-end". La 1ere feuille m'enoie sur la ligne en dessous de la derniere et sur la 2eme feuille elle m'envoie sur la derniere ligne. J'ai essaye toutes les methodes indiquees et aucunes ne me donne la derniere bonne ligne. Pourquoi ?
    Fichiers attachés Fichiers attachés

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    L'URL que je t'ai passé traite de la dernière ligne renseignée, pas de la dernière ligne formatée, ni de la dernière colonne.
    A quoi te sert cette manipe ? Que veux-tu obtenir ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    J'ai un workbook avec plusieures feuilles de longueurs differentes (nb de lignes) et je scan chacune de ces feuilles jusqu'a la derniere ligne de chacune d'elle afin de recupre certaines infos et ce avec la meme macro. D'ou la dependance avec la derniere ligne car j'ai une do-loop.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et donc, tu récupères les lignes renseignées, c'est bien ça ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    oui , jusqu'a la derniere de chaque tableau. Le probleme est que si je fait un test de cell vide, ca ne marche pas car je peux avoir des lignes de cells vide a l'interieur de mon tableau.

    Mais pourquoi la commande Ctrl-end ne donne pas le meme resultat sur chacune des 2 feuilles ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    dans ton cas je préconise ceci :
    Range(Col 65536).End(xlUp)
    Donne la dernière ligne de la feuille pour la colonne
    Pour connaître la dernière ligne absolue renseignée de la colonne A
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        DerniereLigne = Range("A65536").End(xlUp).Row
    MAIS , car il y a un mais biensur, tu es limité a savoir sous quelle version de excel tu lances la macro, car excel 2003 ligne maximum est de 65.536 alors que Excel 2007 ligne maximum approx 1.048.576

    en partant du bas puis en remontant jusqu'à la première non vide, cela t'évite les soucis des trous vide dans ton tableau.

    PS : pour ta question de CTRL-END qui ne te donne pas le même résultat tout le temps, c'est parce que une cellule VIDE ne veut pas dire la même chose pour excel, il se peut qu'il y a des "restes" "crasses" genre, mis en forme, ou bien une donnée qui s'y trouvait puis supprimée ne pas toujours considérée comme cellule Vide, en tout cas c'est du vécu.

    bonne chance

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour être compatible 2003/2007, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DerniereLigne = Cells(Columns(NoCol).Cells.Count, NoCol).End(xlUp).Row
    L'inconvénient de la méthode, tout comme celle qui utilise
    DerniereLigne = Range("A65536").End(xlUp).Row, est que tu as la dernière ligne d'une colonne donnée, ici, la colonne A. Il est donc nécessaire de préciser la colonne la plus longue si les lignes sont inégale et surtout si la colonne désignée risque de ne pas être la plus longue. Et quand on ne peut le prévoir, je fais ça dans une boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For NoCol = 1 to DerniereColonne 'dernière colonne de ta plage
        If DerniereLigne <  Cells(Columns(NoCol).Cells.Count, NoCol).End then
             DerniereLigne = Cells(Columns(NoCol).Cells.Count, NoCol).End
        endif
    Next
    A toutes fins utiles

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    Oui , merci a vous deux. Vous avez raison, ca depend de la longueur de la collonne. Je vais donc faire une boucle (comme preconiser par ouskel'n'or) afin de trouver a coup sur la derniere ligne.

    Merci a vous deux

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    Je corrige ton code, car il ne fonctionnait pas, il y manquait qq chose (si tu veux bien):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For NoCol = 1 to DerniereColonne 'dernière colonne de ta plage
        If DerniereLigne <  Cells(Columns(NoCol).Cells.Count, NoCol).End(xlUp).Row then
             DerniereLigne = Cells(Columns(NoCol).Cells.Count, NoCol).End(xlUp).Row
        endif
    Next
    Merci a tous

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par gilles06 Voir le message
    Je corrige ton code, car il ne fonctionnait pas, il y manquait qq chose (si tu veux bien):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For NoCol = 1 to DerniereColonne 'dernière colonne de ta plage
        If DerniereLigne <  Cells(Columns(NoCol).Cells.Count, NoCol).End(xlUp).Row then
             DerniereLigne = Cells(Columns(NoCol).Cells.Count, NoCol).End(xlUp).Row
        endif
    Next
    Merci a tous
    Je veux bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Trouver la dernier ligne non nulle et remplir les trois colonne a droite par des zero
    Par foxrever dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 15/06/2014, 00h02
  2. [Toutes versions] Trouver la derniere ligne d'une plage.
    Par toniob44 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/04/2012, 20h25
  3. [XL-2003] trouver la derniere ligne occupée
    Par tarantino dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2011, 15h07
  4. [VBA-E] trouver la derniere ligne de mon tableau
    Par dado91400 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/03/2007, 22h41
  5. [D7 & Excel]Peut-on trouver la derniere ligne du fichier
    Par Isa31 dans le forum API, COM et SDKs
    Réponses: 17
    Dernier message: 14/03/2006, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo