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 :

Existe-t-il une methode universelle pour trouver la dernière ligne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut Existe-t-il une methode universelle pour trouver la dernière ligne
    Bonjour,

    La question de la dernière ligne a été déjà bien fouillée
    http://www.developpez.net/forums/d45...ees-d-feuille/

    et pourtant ....

    Je suis confronté à rechercher la dernière ligne dans une feuille où je ne sais pas combien de colonnes sont renseignées
    les colonnes comportent des vides.
    la dernière valeur peut figurer dans n'uimporte quelle colonne.

    J'ai fait des tests, mais ceux-ci ne renvoie pas pas les même valeurs.

    Ma dernière ligne "réelle" en supposant qu'il n'y a rien d'écrit en blanc où en caractère non visible est la ligne 83
    la dernière info colonne A est en 81 mais cellules fusionnées

    Donc je cherche. Ce code M'a renvoyé une ligne où je ne voyait pas de valeur c'est à dire 87 !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Dernière ligne renseignée de la feuille de calculs
    DerLig = Worksheets("Feuil2").UsedRange.SpecialCells(xlCellTypeLastCell).Row
    Donc je me suis dit je vais trouver la colone où il est sensé se trouver quelque chose mais là il me renvoie 256 ! donc la fin de ma feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dernierecol = Range("A87").End(xlToRight).Column
    Je me suis dit si ma dernière valeur est en colonne A c'est normal Me renvoie bien 81 (ça j'ai l'haibitude de l'utiliser.)
    Donc je vérifie la dernière ligne en colonne A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A100").End(xlUp).Row
    La séquence suivante me renvoie aussi 87
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Ligne As Long
    Ligne = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    Je précise que je n'ai pas supprimé de lignes et que j'ai sauvegardé mon fichier avant de lancer la recherche.

    En désespoir de cause j'ai fait une boucle, mais c'est pas très pro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ma_der_ligne = 0
    For i = 1 To 256
    cur_ligne = Cells(100, i).End(xlUp).Row
    If cur_ligne > ma_der_ligne Then
    ma_der_ligne = cur_ligne
    End If
    Next
    MsgBox ma_der_ligne
    End Sub
    En fait dans les tutos on trouve pleins d'exmples mais ils ne sont pas universels.

    donc existe-t-il UNE et UNE seule fonction qui marche à tous les coup ?

    Denis

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim Ligne As Long, C As Range
        Set C = Cells.Find("*", , , , xlByRows, xlPrevious)
        If Not C Is Nothing Then
            Ligne = C.Row
        Else
            MsgBox "feuille vide"
        End If

  3. #3
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour,

    Perso, dans un tableau type base de données ou certains champs peuvent être vide, je ne sais pas dans qu'elle colonne chercher la dernière ligne donc j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim Rg_Depart As Range, plage As Range, Derniere_cell As Range
            Set Rg_Depart = [A1]   '[A1] est la première colonne de mon en tete
            Set plage = Rg_Depart.CurrentRegion
            Set Derniere_cell = plage.Cells(plage.Cells.Count)
                MsgBox Derniere_cell.Address
    End Sub
    Mais la solution de Daniel.C est encore plus générale.

    Pour répondre à la question :
    Citation Envoyé par Denis_67 Voir le message
    donc existe-t-il UNE et UNE seule fonction qui marche à tous les coup ?
    Denis
    Je pense qu'il faut toutes les connaitre et utiliser la plus pertinente selon ton cas.

  4. #4
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Merci à Daniel pour la solution testée et validée

    Merci à Anthony, par contre sa solution est moins universelle.
    Dans mon cas j'ai des cellules fusionnées et donc la recherche du current région s'arrete là.

    en tout cas je vais reprendre comme base la solution de Daniel et vais l'employer dans le maximum de cas possibles afin de lui décernéer le label "universel".

    Merci encore
    Denis

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

Discussions similaires

  1. Problème de filtre pour trouver la dernière ligne
    Par KekeStreet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/12/2012, 15h12
  2. existe t-il une librairie PHP pour ?
    Par defalet_1 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 20/06/2006, 11h24
  3. Réponses: 2
    Dernier message: 14/06/2006, 11h34
  4. Réponses: 3
    Dernier message: 13/06/2006, 15h52
  5. Choix d'un langage : existe-t-il une méthode ?
    Par if_zen dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 21/04/2006, 15h35

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