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] Basique mais comment utiliser un range ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut [VBA-E] Basique mais comment utiliser un range ?
    Bonjour,

    J'ai créé une petite macro qui me permet de sélectionner un range non vide :

    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
    16
    Public Sub SelectCcy()
     
        Dim Counter
        Counter = 0
        Sheets("Currency").Select
        Range("G6").Select
     
        While Selection.Offset(1, 0).Value <> ""
           Selection.Offset(1, 0).Select
           Counter = Counter + 1
        Wend
        Range("G6").Select
        Range(Selection, Selection.Offset(Counter, 0)).Select
        Range(Selection, Selection.Offset(0, 1)).Select
     
    End Sub
    Bon je pense que c'est pas le plus optimal mais ça marche...

    Ensuite je dois m'assurer que mes graphiques pointent bien sur toutes les bonnes données, qui sont basiquement toutes les données que j'ai sélectionné avec la macro SelectCcy (je dois faire cela car les datas sont liées à une database qui parfois retourne plus ou moins de lignes.).

    Avec le macro recorder, j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Macro2()
    '
        ActiveChart.SetSourceData Source:=Sheets("Currency").Range("G6:H8"), PlotBy _:=xlColumns
    End Sub
    Comme je le disais, le Range(G6:H8) est bien ce que j'ai comme range sélectionné dans ma macro SelectCcy.

    Comment donc faut-il s'y prendre pour combiner cela, pour en fait lui dire

    ActiveChart.SetSourceData Source:=Sheets("Currency").MaSelectionDeLaMacroDAvant ???????

    Encore une fois je pense que ça doit vous paraître bien simple mais quand on débute...


    merci bcp d'avance !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Par défaut
    tu devrais plutot faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public maRange as Range
     
    'Dans ta premire macro, tu sauvegardes la Range que tu sléectionnes
    Range(Selection, Selection.Offset(0, 1)).Select
    maRange = Range(Selection, Selection.Offset(0, 1)).Select
     
    'Dans ta deuxième macro
    ActiveChart.SetSourceData Source:=Sheets("Currency").maRange , PlotBy
    Je t'avouie ne pas avoir tester et n'avoir jamais fait ce genr e choses mais y a pas de raisons que çà ne fonctionne pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut
    ben l'est pas content le débugger ...

    Il me dit :
    Run Time Error 438 :

    Object doesn't supprot this property or method
    sur la ligne en question...

    Erreur 2 :

    il accepte pas le "public" devant ma variable rgeCcyBOP :
    Compile Error :

    Invalid attribute in Sub or Function
    J'ai pour ma part que des macro du genre :

    Sub macro()
    ...
    End Sub


    Sub macro2()
    ...
    end sub

    Est-ce que je dois définir des Functions plutôt ? Ou autre chose ? Ou mettre mes variables entre () ?

  4. #4
    Membre éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Par défaut
    Tel un agent immobilier véreux qui t´explique que ta maison n´est pas élégante, mais qu´au moins elle a des murs et un toit et que tu peux y mettre ton lit, je te suggèrerais en cas de force majeure de stocker la valeur de la variable "en dur" dans un onglet pour pouvoir la reprendre ultérieurement:
    dans la première sub:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuilleQuiStockeLesVariables").Range("A1").Value = MavariableQueJeVeuxGarder
    dans les suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MavariableQueJeVeuxGarder = Sheets("MaFeuilleQuiStockeLesVariables").Range("A1").Value

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut
    ok merci pour l'astuce.

    Mais au final, comment est-ce que je peux utiliser le range défini dans mon sub1() comme valeur pour

    Sub Macro2()
    '
    ActiveChart.SetSourceData Source:=Sheets("Currency").Range("G6:H8"), PlotBy _:=xlColumns
    End Sub


    (à la place du Range"G6:H8") ???

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Par défaut
    Le public doit être écrit avant toutes les macros
    Si tu les mets dans les macros, normal qu'il ne compile pas

    Tu dois le placer tout en haut

Discussions similaires

  1. Installation mais comment utiliser ?
    Par zuzuu dans le forum Installation
    Réponses: 5
    Dernier message: 23/01/2009, 14h09
  2. [MFC/Excel] Comment utiliser un Range ?
    Par SmOkEiSBaD dans le forum MFC
    Réponses: 2
    Dernier message: 14/05/2008, 14h00
  3. Réponses: 3
    Dernier message: 01/05/2007, 17h58
  4. [XSLT] - Modèle réutilisable... mais comment l'utiliser.
    Par jacquesh dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2006, 11h07
  5. [VBA] Comment utiliser Access avec Excel
    Par MxPx_23 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/02/2006, 12h00

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