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]range discontinue pour un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut [VBA-E]range discontinue pour un graphique
    bonjour à tous
    voila je veux créer un graphe à partir d'une plage discontinue.
    le truc c que je me suis mis en ref L1C1 pour pouvoir mettre des indices par la suite. j'ai essayé le code donnée par l'enregistreur mais il utilise forcément la référence A1 et je ne sais pas itérer avec.
    J'ai donc essayé de l'adapter en créant une range union mais apparement cela ne marche pas dans les arguments. il me met : la methode 'cells' de l'objet '_global' a échoué.
    voici mon code en A1 et en L1C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Range("T7:T12,Y7:Y12").Select
        Range("Y7").Activate
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SetSourceData Source:=Sheets("j=1mm").Range("T7:T12,Y7:Y12"), _
            PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="j=1mm"
        With ActiveChart
            .HasTitle = False
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "qf en l/h"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Pm en Pa"
        End With
    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
    17
    Dim marange As Range
    '
        Set marange = Union(Range(Cells(13, 20), Cells(18, 20)), Range(Cells(13, 25), Cells(18, 25)))
        marange.Select
        Cells(13, 20).Activate
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SetSourceData Source:=Sheets("j=1mm").marange, _
            PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="j=1mm"
        With ActiveChart
            .HasTitle = False
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "qf en l/h"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Pm en Pa"
        End With
    voili voila
    merci
    rémi

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    excusez moi jai oublié de préciser que c'était sur Excel

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    adresse tes ranges avec des cell(x,y) c'est plus commode
    Elle est pas belle la vie ?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    quand tu utilise Cells(... s'en rien devant ... il s'effectue sur la feuille active et renvoi une erreur ... si par exemple la feuille active est un graphique... est tu sur de ne pas être dans ce cas ...

    pour éviter ce probléme tu peu ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim sh as worksheet
    set sh = thisworbook.sheets("MAfeuille")
    ...
    ...
     
    ....Union(sh.range(sh.cells...

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    jai bien essayé de spécifier mieux mes cell et range mais le pb au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SetSourceData Source:=Sheets("j=1mm").marange, PlotBy:=xlColumns
    demeure, je n'arrive pas à spécifier une bonne plage discontinue en source sans passer en A1

    random qu'entends tu par adresser mes ranges en cell(x,y)?
    merci
    rémi

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux faire un essai en remplaçant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SetSourceData Source:=Sheets("j=1mm").maRange, PlotBy:=xlColumns
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SetSourceData Source:= maRange, PlotBy:=xlColumns

    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
    17
    18
    Sub Test()
    Dim maRange As Range
     
        Set maRange = Union(Range(Cells(13, 20), Cells(18, 20)), Range(Cells(13, 25), Cells(18, 25)))
     
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SetSourceData Source:=maRange, PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="j=1mm"
        With ActiveChart
            .HasTitle = False
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "qf en l/h"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Pm en Pa"
        End With
     
    End Sub

    bon apres midi
    michel

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    merci SilkyRoad ca marche maintenant
    merci aux autres
    rémi

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

Discussions similaires

  1. [XL-2003] VBA: Tri de range collection pour les graphiques
    Par Holger dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2011, 09h35
  2. [XL-2003] Range pour un graphique
    Par sedam dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2009, 19h15
  3. (vba excel) echelle horaire pour graphique
    Par DirtyA:ex dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 27/06/2006, 14h00
  4. [VBA-E] range discontinue pour un graphique
    Par gruget dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/05/2006, 01h56
  5. VBA,Graphiques :Series qui pointent sur des Range Discontinu
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2005, 14h05

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