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 :

[VBA-E] Récupérer la derniere cellule d'un range


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut [VBA-E] Récupérer la derniere cellule d'un range
    Bonjour à tous,

    Je sais que ca parrait trés bête, mais je m'arrache les cheveux la dessus, et comme je commence à plus en avoir, je fais appel a vous...

    Alors voila je souhaite récupérer les coordonée de le dernière cellule d'un range.

    Quand mon range a plus de 1 colonne, pas de problème, quand il en a 1, ca va pas...

    Voila ce que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    intColLastCell = rngRange.End(xlToRight).Column
    intRowLastCell = rngRange.End(xlDown).row
    Pour la colonne c'est bon, mais pour la ligne, j'ai des mauvaise valeurs dans le cas ou j'ai plus d'une collone dans le range..

    Je comprend rien..

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si tu cherches la dernière utilisée de la feuille,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.SpecialCells (xlLastCell)
    fonctionne très bien.
    Il n'y a qu'à en demander le .Row ou .Column si besoin.

  3. #3
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Non, justement, j'ai essayé avec ca, mais j'ai besoin de récupérer la derniere cellule d'un range particulier compris n'importe ou dans la feuille, pas la dernière cellule de la feuille.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DernièreColonne = ActiveCell.End(xlToRight).Column
    Tu peux remplacer Activecell par la cellule

    A+

  5. #5
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Je n'ai pas un problème sur la dernière colonne, mais sur la dernière ligne du range...
    Je sais, je suis ch....

    Et avec le xldown, il y a des décalages avec ce que j'attend.

  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
    Si tu peux avoir des cellules vides dans ta ligne ou ta colonne, utilise plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        DernièreColonne = ActiveSheet.Range("IV1").End(xlToLeft).Column
        DernièreLigne = Range("A65535").End(xlUp).Row
    A+

  7. #7
    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
    Hello illight,
    Tu préfères montrer tes bêtises à tout le monde ? Soit :

    Code illight : Sélectionner tout - Visualiser dans une fenêtre à part
    DernièreColonne = range("A65535").End(xlup).row 'ou column

    Je voulais juste t'épargner ça
    Tu juges

  8. #8
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    J'ai essayé avec les 4 solution...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        intRowLastCell = rngRange.End(xlDown).row ' renvoi 2589
        intRowLastCell = rngRange.End(xlUp).row ' renvoi 2191
        intRowLastCell = rngRange.End(xlToRight).row ' renvoi 2192
        intRowLastCell = rngRange.End(xlToLeft).row ' renvoi 2192
    Ma dernière ligne du range en question es 2587...
    Ma première (pour info) est 2192

    Aucune de ces méthode ne me renvoi la bonne valeur

  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
    As-tu essayé la mienne ?
    Parce que, si tu as des cellules vides dans ta ligne (ou dans ta colonne), les tiennes ne fonctionnent pas !

    Tu dis

    A+

    Là, je vais me restaurer, je te reprends après si besoin est

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    En tout cas, il ne faut pas aller vers la droite ou la gauche pour trouver une ligne.

  11. #11
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Excuse moi, mais j'ai l'impression qu'on utilise la même méthode non ?

    Voici un peu plus de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Set rngRange = ActiveSheet.Range("MonRange")
     
        intRowLastCell = rngRange.End(xlDown).row '2589
    "MonRange" est un range nommé sous Excel. Il commenca à la ligne 2192, fini à la ligne 2587, de la colonne 4.
    Il ne contient et ne pourra jamais contenir de cellules vides...

    Je peux me mettre à pleurer c'est ca ?


  12. #12
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par AlainTech
    En tout cas, il ne faut pas aller vers la droite ou la gauche pour trouver une ligne.
    Je sais bien, mais c'était juste pour montrer que j'avais tout tenter... Quand c'est presque peine perdue, on essaie tout :o)

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Erreur!

    En programmation, il ne faut pas essayer, il faut comprendre.

    Si je n'ai pas cherché plus sur ton problème, c'est que je n'ai pas tes données.

    Cherche un peu (dans l'aide) sur Region ou ActiveRegion (de tête, pas vérifié).

  14. #14
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Le probléme c'est que je ne comprend pas.

    C'est quand même pas simple à comprendre quand ca marche dans certains cas, et pas dans d'autres.

    Des fois j'ai la bonne ligne, des fois il me renvoi 2,3 ou 4 ligne plus bas, alors qu'elle ne font pas parties du range avec lequel je travaille..

    Et j'ai utilisé l'aide avant, et aussi éfféctué des recherches en vain, je n'aurais pas poster la question sinon.

    Bref, merci quand même.

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je viens de trouver pour la region.

    Cherche sur CurrentRegion.

  16. #16
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Tu va peut être me dire que je cherche pas asser , mais pourtant je l'ai fait.

    Voila ce que j'ai "essayer" (excuse moi je trouve pas d'autre mots )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Set rngRange = ActiveSheet.Range("MonRange")
      intRowLastCell = rngRange.CurrentRegion.End(xlDown).row ' renvoi 2188
      intRowLastCell = rngRange.CurrentRegion.End(xlUp).row 'renvoi 9
    Alors que j'attend toujours 2587.

    Est-ce que tu me disputes si je dis que je comprend pas ?

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Moi, il y a une chose qui me turlupine...

    Au départ, tu connais ton Range ("MonRange")?

    C'est une des raisons qui m'ont fait ne pas continuer à chercher.

    J'ai l'impression que tu ne nous donnes pas toutes les infos.

  18. #18
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Désolé si je ne suis pas asser clair.

    "MonRange" est le nom d'un range que j'ai crée en le seléctionnant dans Excel, et en le nommant ainsi.

    Comme ca, j'accede directement à cette zone en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Set rngRange = ActiveSheet.Range("MonRange")
    Ensuite, le but ultime est de parcourir toutes les cellules de cette zone comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    For Each cellCurrentCell In rngRange
     
      strLine = cellCurrentCell.Text
     
      ' Pour la derniere cellule du range, j'ai une action pariculière à faire dessus
      ' Je dois donc tester si c'est la dernière cellule
      If cellCurrentCell.Column = intColLastCell And _
        cellCurrentCell.row = intRowLastCell Then
        ' Mon action particulière
      End If
     
      Print #intFileQuery, strLine
     
    Next cellCurrentCell
    Mon problème étant la determination de cette dernière cellule, ca marche les 2/3 du temps comme je le fais, et des fois il y a un petit décalage...

    Je ne peux pas en dire plus la ..

  19. #19
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Tu peux pas nous mettre un fichier Excel avec 2 feuilles, un cas qui marche et l'autre qui ne marche pas ?

  20. #20
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Tiens, un petit truc dont tu pourrais t'inspirer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox Split(Range("MonRange").Address, ":")(1)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-E]coordonnées de la derniere cellule marqué sur excel
    Par amelhog dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/02/2006, 19h39
  2. [VBA]comptage de lignes en fonction du contenu des cellules
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/12/2005, 11h38
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  4. [VBA-E] recuperer le texte d un commentaire de cellule excel
    Par Verbal-Quint dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2004, 10h27

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