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 :

Comment trouver la dernière ligne de mon tableau?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Comment trouver la dernière ligne de mon tableau?
    Bonjour !

    je cherche en VB à obtenir le numéro de la dernière ligne de mon tableau EXCEL contenant une valeur.
    Alors, je connais déjà ce code qui me donne ce que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derniereligne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
    SAUF QUE : mes 2 dernières lignes contenant des valeurs sont masquées : par exemple mes lignes 33 et 34 contiennent des données mais pour une question visuelle, il faut que je les masque. Du coup, ma variable derniereligne contient 32 au lieu de 34.
    je n'ai pas trouvé de moyen de récupérer 34 sauf de ré-afficher les lignes 33 et 34 bien sur....à moins qu'il existe un moyen d'afficher toutes les lignes temporairement pour trouver ma dernière ligne puis de masquer de nouveau les lignes qu'ils l'étaient mais là, je n'ai pas forcement toujours 33 et 34 qui sont masqués, ça peut varier...

    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
    Bonsoir Thenico, bienvenue sur le forum.
    Comme tu es tout neuf sur le forum je ne dirai rien cette fois-ci mais la réponse a été donnée 75279 fois sur ce forum
    Bon, je me sens tout gentil alors regarde déjà ici, il y a forcément une des syntaxes proposées qui te convient. Sinon, tu peux aussi chercher dans la FAQ (adresse dans la signature) dans les tutoriels (adresse dans la signature)... etc.
    Bonne soirée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut j'ai déjà essayé mais ça ne fonctionne pas !
    merci pour ta réponse mais la réponse donné X fois n'était peut être pas dans le cas où les denrières X lignes contenant une valeur étaient masquées.
    Tu n'as qu'à essayer, tu verras qu'Excel ne me renvoie pas le bon nombre de lignes si je masque par exemple mes 2 dernières lignes contenant une valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    Dim nblignes As Variant
    nblignes = Range("A1").SpecialCells(xlCellTypeLastCell).Row
    MsgBox CStr(nblignes)
    End Sub
    j'ai testé toutes les autres solutions proposés dans le tutoriel mais aucune ne marche tant que je masque mes X dernières lignes contenant une valeur.

    en attendant, je suis bloqué bug excel ?

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    bien d'accord avec toi. Si la dernière ligne est cachée, cela ne fonctionne pas.

    Par contre, avec ceci, j'obtiens le bon comptage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.UsedRange.Rows.Count
    Edit----
    Salut Ousk.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut même joueur joue encore....
    oui mais non car dans mon cas, il se peut que les premières lignes de ma feuille Excel (ou des lignes intermédiaires) ne soient pas remplies. dans ton cas, il fait un comptage des lignes remplies mais il ne me renvoie pas le numéro de la dernière ligne remplie
    il faudrait un mix des 2 formules là ça marcherait

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Points : 417
    Points
    417
    Par défaut
    Bonjour,

    Voici 2 méthodes qui devraient fonctionner :

    sans passer par vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(SI(A1:A65535<>"";LIGNE(A1:A65535);1))
    Formule matricielle à valider en faisant CTRL+MAJ+ENTREE

    avec vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 65536 To 1 Step -1
    If Range("A" & i) <> "" Then
    MsgBox i
    Exit Sub
    End If
    Next

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut thenico35 et le forum
    j'ai testé toutes les autres solutions proposés dans le tutoriel mais aucune ne marche tant que je masque mes X dernières lignes contenant une valeur.
    Plusieurs solutions, mais ne connaissant pas le but....
    - Mettre un espace en A1 et utiliser UsedRange.Rows.Count
    - Tester les lignes invisibles après Range("A1").SpecialCells(xlCellTypeLastCell).Row
    - Déplacer les lignes incriminées en lignes 1 & 2
    bug excel ?
    Toutes nos erreurs ne sont-elles pas dues à un bug ?
    Si tu ne scies pas droit est-ce bien la faute de la scie ?
    A+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    nos erreurs ne sont-elles pas dues à un bug ?
    Si tu ne scies pas droit est-ce bien la faute de la scie ?
    A+
    disons que là, la fonction Excel xlCellTypeLastCell ne prend pas en compte le fait qu'une dernière ligne puisse être masquée donc pas notre faute ;-)

    Sinon la solution suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For I = 65536 To 1 Step -1
    If Range("A" & I) <> "" Then
    MsgBox I
    Exit Sub
    End If
    Next
    fonctionne sans problème
    Merci encore !

  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
    Citation Envoyé par thenico35
    Sinon la solution suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For I = 65536 To 1 Step -1
        If Range("A" & I) <> "" Then
            MsgBox I
            Exit Sub
        End If
    Next
    fonctionne sans problème
    Merci encore !
    Oui ! Et se tailler un cure-dent avec une hache aussi

    Une solution parmi d'autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLig = Split(Worksheets("NomDeLaFeuille").UsedRange.Address, "$")(4)
    Et cette solution est proposée dans l'url que je t'ai indiquée...

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

Discussions similaires

  1. Comment trouver la dernière ligne ajoutée a un fichier ?
    Par panthere noire dans le forum Débuter
    Réponses: 7
    Dernier message: 22/07/2012, 04h05
  2. Réponses: 8
    Dernier message: 01/01/2011, 13h06
  3. Réponses: 2
    Dernier message: 17/06/2008, 12h14
  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. [VBA-E]comment trouver la dernière ligne contenan
    Par couscoussier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2006, 16h53

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