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 mon problème je souhaite créer un graphique à partir de valeurs qui sont réparties qur 2 lignes mais de manière discontinue j'ai créé ces lignes de code:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Set marange1 = Union(sh.Cells(8, 8), sh.Cells(8, 17), sh.Cells(8, 26), sh.Cells(8, 35), sh.Cells(8, 44), sh.Cells(8, 53), sh.Cells(8, 62), sh.Cells(8, 71), sh.Cells(8, 80))
       Set marange2 = Union(sh.Cells(i, 2), sh.Cells(2, 11), sh.Cells(2, 20), sh.Cells(2, 29), sh.Cells(2, 38), sh.Cells(2, 47), sh.Cells(2, 56), sh.Cells(2, 65), sh.Cells(2, 74))
       Set unionrange = Union(marange1, marange2)
     
        unionrange.Select
     
        Charts.Add
        ActiveChart.ChartType = xlXYScatter
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection(1).Delete
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(1).XValues = _
            "=('j=1,2mm'!R2C2,'j=1,2mm'!R2C11,'j=1,2mm'!R2C20,'j=1,2mm'!R2C29,'j=1,2mm'!R2C38,'j=1,2mm'!R2C47,'j=1,2mm'!R2C56,'j=1,2mm'!R2C65,'j=1,2mm'!R2C74)"
        ActiveChart.SeriesCollection(1).Values = _
            "=('j=1,2mm'!R8C8,'j=1,2mm'!R8C17,'j=1,2mm'!R8C26,'j=1,2mm'!R8C35,'j=1,2mm'!R8C44,'j=1,2mm'!R8C53,'j=1,2mm'!R8C62,'j=1,2mm'!R8C71,'j=1,2mm'!R8C80)"
        ActiveChart.SeriesCollection(1).name = ""
        ActiveChart.Location Where:=xlLocationAsObject, name:="j=1,2mm"
        With ActiveChart
            .HasTitle = False
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
    End With
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection(1).Select
        ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=4 _
            , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:= _
            False).Select
        ActiveChart.Legend.Select
    le truc c que je veux faire une boucle pour effectueer ce graph sur un grand nombre de lignes et donc que veux definir mes cellules de définitions avec des i et j
    je suis en def L1C1
    j'ai commencé à définir des ranges mais j'arrive pas à changer les def absolue de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveChart.SeriesCollection(1).XValues = _
            "=('j=1,2mm'!R2C2,'j=1,2mm'!R2C11,'j=1,2mm'!R2C20,'j=1,2mm'!R2C29,'j=1,2mm'!R2C38,'j=1,2mm'!R2C47,'j=1,2mm'!R2C56,'j=1,2mm'!R2C65,'j=1,2mm'!R2C74)"
        ActiveChart.SeriesCollection(1).Values = _
            "=('j=1,2mm'!R8C8,'j=1,2mm'!R8C17,'j=1,2mm'!R8C26,'j=1,2mm'!R8C35,'j=1,2mm'!R8C44,'j=1,2mm'!R8C53,'j=1,2mm'!R8C62,'j=1,2mm'!R8C71,'j=1,2mm'!R8C80)"
    est-ce quelqu'un aurait une idée ?
    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
    tu veux dire que je ne peux pas faire de boucle directement dans la définition de mes valeurs pour le graph? je suis obligé de passer par des variables intermédiaires?
    ce que j'ai déja tenté c de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveChart.SeriesCollection(1).XValues = _
            "=('j=1,2mm'!R2C2,'j=1,2mm'!R2C11,'j=1,2mm'!R2C20,'j=1,2mm'!R2C29,'j=1,2mm'!R2C38,'j=1,2mm'!R2C47,'j=1,2mm'!R2C56,'j=1,2mm'!R2C65,'j=1,2mm'!R2C74)"
        ActiveChart.SeriesCollection(1).Values = _
            "=('j=1,2mm'!R8C8,'j=1,2mm'!R8C17,'j=1,2mm'!R8C26,'j=1,2mm'!R8C35,'j=1,2mm'!R8C44,'j=1,2mm'!R8C53,'j=1,2mm'!R8C62,'j=1,2mm'!R8C71,'j=1,2mm'!R8C80)"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveChart.SeriesCollection(1).XValues = _
            "=(sh.Cells(i, j), sh.Cells(2, j+9), sh.Cells(2, 20), sh.Cells(2, 29), sh.Cells(2, 38), sh.Cells(2, 47), sh.Cells(2, 56), sh.Cells(2, 65), sh.Cells(2, 74))"
        ActiveChart.SeriesCollection(1).Values = _
            "=(sh.Cells(8, 8), sh.Cells(8, 17), sh.Cells(8, 26), sh.Cells(8, 35), sh.Cells(8, 44), sh.Cells(8, 53), sh.Cells(8, 62), sh.Cells(8, 71), sh.Cells(8, 80))"
    mais ca marche pas
    du coup je vois pas comment faire
    sinon pour la seriecollection c'est parce que je faisais un unionrange.select avant de créer le graph et que du coup il me créait 12 séries différentes mais c bon je lai enlevé
    rémi

  3. #3
    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 040
    Points
    20 040
    Par défaut
    il faut mettre les adresses en "texte" :
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    ActiveChart.SeriesCollection(1).XValues = _
            "=(" & sh.Cells(i, j).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, j + 9).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 20).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 29).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 38).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 47).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 56).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 65).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            "," & sh.Cells(2, 74).Address(ReferenceStyle:=xlR1C1, External:=True) & _
            ")"

  4. #4
    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é ce que vous m'avez passé mais ca marche pas
    j'ai tenté en modifiant la syntaxe et avec des variables intermédiaires mais il me renvoie toujours la même erreur 1004:
    impossible de définir la propriéte XVvalues de la classe Series
    je suis pas encore un pro de vba donc pour ton code j'ai peut etre juste fait une erreur de syntaxe
    merci
    rémi

  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
    coucou dsl de remettre un vieux sujet sur le tapis mais je ne l'ai tjrs pas resolu et ce n'est pas faute d'avoir essayé
    si j'ai compris ce qui se passe c'est juste un probleme de definition des adresses dans la fonction
    ActiveChart.SeriesCollection(1).XValues
    j'ai bien essayé de mettre les adresses en texte mais il me dit tjrs que ma propriété n'est pas définie
    j'ai essayé sans définir l'adresse mais juste les valeurs mas ca ne marche pas non plus
    si quelqu'un a une idée ca m'aiderait bien
    merci
    rémi

  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
    Hello,
    Depuis le 19 avril, tu dois avoir analysé ce que tu veux faire...
    Explique-nous en français ce que tu souhaites réaliser si ce que je te mets plus loin ne te va pas.
    Je ne comprends pas ton code pour la série(1)
    ActiveChart.SeriesCollection(1).XValues = _
    '......
    ActiveChart.SeriesCollection(1).Values = "=('j=1,2mm'!R8C8,'j=1,2mm'!R8C17, _
    'j=1,2mm'!R8C26,'j=1,2mm'!R8C35,'j=1,2mm'!R8C44,'j=1,2mm'!R8C53, _
    'j=1,2mm'!R8C62,'j=1,2mm'!R8C71,'j=1,2mm'!R8C80)"
    '......
    'j=1,2mm' est bien le nom de la feuille, alors qu'est ce que sh. ?

    As-tu essayé de désigner directement la source de ton graph ? Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Source:=Sheets("Feuil4").Range( _
            "A1,A3,A5,A7,A9,A11,A13,A15,A17"), PlotBy:= _
            xlColumns
    Dans le même esprit tu peux travailler sur une variable et établir ta plage dans un tableau. Exemple :
    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 GraphAvecDonnéeDansCellulesSéparées()
    Dim Plage, i
        NoCols = Array(0, 8, 17, 26, 35, 44, 53, 62, 71, 80)
        For i = 1 To UBound(NoCols)
     
            '******** INSERE DES VALEURS BIDON DS LES CELLULES - A SUPPRIMER ***********
            Randomize                                                                 '*
            Cells(8, NoCols(i)).Value = Int(NoCols(i) * Rnd) + 1                      '*
            '***************************************************************************
     
            Plage = Plage + Cells(8, NoCols(i)).Address(RowAbsolute:=False, ColumnAbsolute:=False) + ","
        Next
        Plage = Left(Plage, Len(Plage) - 1) 'supprime la dernière virgule ajoutée
        Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData source:=Sheets("Feuil1").Range(Plage), PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
    End Sub
    Tu dis

    A+

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: 6
    Dernier message: 23/03/2006, 12h02
  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