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 :

[CRange] Est-il possible de récupérer un objet CRange qui est le range courant ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut [CRange] Est-il possible de récupérer un objet CRange qui est le range courant ?
    Bonjour,
    Je sélectionne un Range grâce à la fonction GoTo, je souhaiterais récupérer ce Range dans un objet de type CRange.
    Je ne trouve pas de fonction du type get_CurrentSelection ou get_CurrentRange, et la fonction get_ActiveCell ne me renvoie pas tout mon range mais seulement la première cellule de ceui-ci...

    Y a t-il une solution ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Parce qu'il y a l'objet ActiveCell que tu peux appeler directement. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "La valeur de la cellule " & ActiveCell.Address & " est " ActiveCell.Value

  3. #3
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "La valeur de la cellule " & ActiveCell.Address & " est " ActiveCell.Value
    je mettrais plutot ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "La valeur de la cellule " & selectionAddress & " est " ActiveCell.Value
    Alleï Bonjour chez vous!

  4. #4
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Bonjour,
    Le problème est que mon Range est plus grand qu'une Cellule, et la première cellule de ce Range est également un Range nommé, donc lorsque j'utilise Active_Cell il me renvoie le nom de la Cellule et non mon Range entier.

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Non, non! nous ne sommes pas ...

    Et j'ai bien mis le mot Exemple juste avant mon exemple...

    Il faut boucler sur tous les objets Range de ton bloc de cellules

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim cellule As Range
    For Each cellule In Selection
        ' tu mets ton code ici
    Next cellule

  6. #6
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Ce n'est pas tout à fait ce que je souhaite faire, je rééxplique le problème :
    - J'ai un Range qui s'appelle "record" (3 cellules)
    - Dans ce Range j'ai deux autres Ranges "r.vente" (1 Cellule) et "r.prix" (1 Cellule)
    - Avec la fonction GoTo je selectionne mon range "record"
    - Après souhaitant récupérer mon Range "record" sous une objet de type CRange, j'utilise ActiveCell qui me renvoie la première cellule de "record" c'est à dire "r.vente"
    - Donc au final je n'ai pas "record" mais seulement "r.vente"

    Je ne sais pas si j'ai été plus clair
    On verra bien.

  7. #7
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    et si tu utilise "selection" plutot que "activecell"?
    Alleï Bonjour chez vous!

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    mayekeul: tu m'ôtes les mots de la bouche... heu... les touches de sous les doigts...

  9. #9
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Mais "selection" est une propriété d'un Range, or justement je cherche à récupérer un Range, je ne peux donc pas l'utiliser à moins qu'elle ne soit accessible à partir du Worksheet ou de l'application ?

  10. #10
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    tu m'ôtes les mots de la bouche... heu... les touches de sous les doigts...
    tu sais plus écrire alors?
    bouges pas, je te les rendre de suite!




    sinon selection représente la selection en cours et est un objet range à part entière.

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug. print selection.address
    doit te renvoyer l'adresse de la plage de cellules sélactionnées
    Alleï Bonjour chez vous!

  11. #11
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par fring Voir le message
    Bonjour tlm,

    Je ne comprend pas pourquoi tu utilises Go To pour sélectionner ta plage de cellules ?

    Pourquoi ne fais-tu pas comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Plage As Range
    Set Plage = Range("A1:D10")
    Si tu veux sélectionner manuellement la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Plage As Range
    Set Plage = Selection
    Et ensuite tu manipules la variable plage comme tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Plage.Interior.ColorIndex = 3
    Plage.ClearContents
    MsgBox Plage.Address
     
    Dim Cel As Range
    For Each Cel In Plage
    '...
    Next
     
    'etc...
    Et le tout...sans passer par les "Select" !
    Bonjour, le problème est que le Range n'est pas fixe, il peut être n'importe ou dans la feuille d'où l'utilité du GoTo.

    Comment accède-t-on à cet objet Selection ?

  12. #12
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Y'a certainement un truc que je n'ai pas compris... Pour commencer, je suis sous Excel XP et je ne sais pas ce qu'est un Objet CRange...

    Explications requises

  13. #13
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    oui mais bon si on dois récuperer l'adresse de la selection...
    ton code... ben....

    et c'est ici toute la question
    Alleï Bonjour chez vous!

  14. #14
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    En fait je ne code pas en VB mais en C++/MFC (Beaucoup de chose diffère dans l'utilisation du modèle objet Excel).
    Toute les Classes s'appelle C.... donc CApplication, CRange, CDrawingObjects, CWorksheet, CWorkbook, etc...

    De plus les énumérations ne sont pas accessibles (xl...) , je suis donc obligé de tout redéfinir en dur...

  15. #15
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par fring Voir le message
    Citation Envoyé par SmOkEiSBaD Voir le message
    Bonjour, le problème est que le Range n'est pas fixe, il peut être n'importe ou dans la feuille d'où l'utilité du GoTo.
    Mon range peut très bien être de A1 à C10 comme de Z2 à AB30. Je ne sais pas ou il se trouve, c'est justement la fonction que j'éssaye de faire, je lui donne le nom d'un range en paramètre et elle me renvoie l'objet Range correspondant.

  16. #16
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    dans ce cas, si "selection" n'est pas dispo
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    range(activecell.end(xldown),activecell.end(xldown).end(xlright)).address
    Alleï Bonjour chez vous!

  17. #17
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Ben... alors t'es pas dans le bon forum... ? Veux-tu qu'on déplace la discussion dans le forum C++ ? Je peux le faire... Y'a qu'à...

  18. #18
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par mayekeul Voir le message
    dans ce cas, si "selection" n'est pas dispo
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    range(activecell.end(xldown),activecell.end(xldown).end(xlright)).address
    Je ne sais pas si "Selection" est dispo, à partir de quel objet peut récupérer "Selection" ? Il ne tombe pas du ciel quand même o_O

  19. #19
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par zazaraignée Voir le message
    Ben... alors t'es pas dans le bon forum... ? Veux-tu qu'on déplace la discussion dans le forum C++ ? Je peux le faire... Y'a qu'à...
    Non merci les gens de C++/MFC ne connaisse pas grand chose sur Excel

  20. #20
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    il fait partie (dans ton cas) de ton objet CApplication
    Alleï Bonjour chez vous!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/05/2008, 08h40
  2. Réponses: 4
    Dernier message: 21/05/2008, 13h40
  3. Est-il possible de récupérer une énumération
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2007, 20h28
  4. Récupérer les mot-clés Google, est-ce possible ?
    Par kurtalis dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/05/2006, 18h48
  5. Est il possible de dissocier un objet placer ds un GroupBox
    Par Yphon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/01/2006, 10h45

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