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 :

Graphique dynamique sous excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Graphique dynamique sous excel
    Bonjour,

    N'étant pas familier avec les graphiques, je viens vous demander de l'aide.
    L'idée de mon programme est d'actualiser a partir d'une feuille excel une série de graphiques (chaque jour j'ajoute de nouvelles données, je suppose connu la derniere ligne temp). la premiere colonne represantant l'abscisse des graphiques, la colonne 2 l'axe des ordonnées du 1er graphique, la colonne 3 l'axe des ordonnées du 2e graphique etc...
    voici un exemple que j'ai voulu tester mais qui ne fonctionne malheureusement pas.
    temp represente ma derniere ligne
    compt me sert a glisser d'un graphique au suivant.
    les données se trouvent sur la feuil1 et les graphiques sur la feuil2


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Base 1
    Sub test()
    Compt = 2
    temp = 20
    Worksheets("Feuil2").Activate
    For Each graph In ChartObjects
        graph.SeriesCollection(1).Values = Range(Worksheets("Feuil1").Cells(2, Compt), Worksheets("Feuil1").Cells(temp, Compt))
        graph.SeriesCollection(1).XValues = Range(Worksheets("Feuil1").Cells(2, 1), Worksheets("Feuil1").Cells(temp, 1))
        Compt = Compt + 1
    Next
    End Sub
    merci d'avance pour votre aide.

    Lucas

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    merci pour le lien, malheureusement je crois pas avoir trouvé mon bonheur..
    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
     
    Option Base 1
    Dim graph As ChartObject
     
    Sub test()
    Compt = 2
    temp = 20
    Worksheets("Feuil2").Activate
    For Each graph In Sheets(2).ChartObjects
        Set graph = Sheets("Feuil2").ChartObjects(i)
        graph.SeriesCollection(1).Values = Range(Worksheets("Feuil1").Cells(2, Compt), Worksheets("Feuil1").Cells(temp, Compt))
        graph.SeriesCollection(1).XValues = Range(Worksheets("Feuil1").Cells(2, 1), Worksheets("Feuil1").Cells(temp, 1))
        Compt = Compt + 1
    Next graph
    End Sub
    j'ai légèrement modifié le code, mais fondamentalement je ne comprends pas ce qui bloque. Peut etre que ca vous sautera aux yeux

    Lucas

  3. #3
    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 une erreur ? Sur quelle ligne ? Bref, éclaire-nous qu'on n'ait pas à reproduire ton code pour voir ce qui se passe

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    oui dsl, alors le msg d'erreur est:
    erreur d'execution 9
    l'indice n'appartient pas a la selection
    et il me surligne la ligne Worksheets("Feuil2").activate

    Option Base 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim graph As ChartObject
     
    Sub test()
    Compt = 2
    temp = 20
    Worksheets("Feuil2").Activate
    For Each graph In Sheets(2).ChartObjects
        graph.SeriesCollection(1).Values = Range(Worksheets("Feuil1").Cells(2, Compt), Worksheets("Feuil1").Cells(temp, Compt))
        graph.SeriesCollection(1).XValues = Range(Worksheets("Feuil1").Cells(2, 1), Worksheets("Feuil1").Cells(temp, 1))
        Compt = Compt + 1
    Next graph
    End Sub
    j'ai supprimer une ligne qui ne servait a rien

  5. #5
    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
    Ces deux lignes me gènent
    graph.SeriesCollection(1).Values = Range(Worksheets("Feuil1").Cells(2, Compt), Worksheets("Feuil1").Cells(temp, Compt))
    graph.SeriesCollection(1).XValues = Range(Worksheets("Feuil1").Cells(2, 1), Worksheets("Feuil1").Cells(temp, 1))
    Je mettrais déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    graph.SeriesCollection(1).XValues = Sheets("Feuil1").Range(Cells(2, 1),Cells(temp, 1))
    Tu dis

  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
    Nos messages se sont croisées.
    Remplace
    Worksheets("Feuil2").activate
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.select 'ou activate - les deux devraient fonctionner (?)
    Tu peux tester pour nous ?

    Pense aux balises code

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Option Base 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim graph As ChartObject
     
    Sub test()
    Compt = 2
    temp = 20
    Sheets("Feuil2").Select
    For Each graph In Sheets(2).ChartObjects
        graph.SeriesCollection(1).Values = Sheets("Feuil1").Range(Cells(2, Compt), Cells(temp, Compt))
        graph.SeriesCollection(1).XValues = Sheets("Feuil1").Range(Cells(2, 1), Cells(temp, 1))
        Compt = Compt + 1
    Next graph
    End Sub
    apres execution, erreur 1004
    erreur d"finie par l'application ou par l'objet
    et il me surligne
    graph.SeriesCollection(1).Values = Sheets("Feuil1").Range(Cells(2, Compt), Cells(temp, Compt))

    Pense aux balises code, tu sélectionnes ton code + 1 clic sur #

  8. #8
    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
    Oui, il semble me souvenir (???) qu'il faut ajouter quelque chose...
    Pendant que je vérifie, essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        graph.SeriesCollection(1).Values = Sheets("Feuil1").Range(Cells(2, Compt), _
    Cells(temp, Compt)).address
    Sans garantie, j'utilisais une variable "plage" pour le Range.
    Tu regardes. Je jète un oeil de mon côté

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    j'ai effectué le changement mais il maintient la meme erreur...

  10. #10
    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
    Voilà qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Plage
     
        Plage = Feuil1.Cells(1, 1).Address & ":" & Feuil1.Cells(12, 1).Address
        ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(Plage), PlotBy _
            :=xlColumns
    Pas très orthodoxe mais c'est ok. On doit pouvoir simplifier. Je ne comprends pas pourquoi d'autres syntaxes plus mieux sioux ne sont pas acceptées On attendra bbil ou silkyRoad sur ce coup là

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    je t'avoue commencer à etre depassé par cette syntaxe, est ce que tu pourrais me remettre le code complet apres modification stp? dans ta modification est ce que tu prends en compte la modification des deux plages, colonnes 1 en abscisse et colonne compt dynamique pour chaque graph

  12. #12
    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
    Ok, je reprends ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Plage ' (variant)
    Sheets("Feuil2").Select
    For Each graph In Sheets(2).ChartObjects
        Plage = Cells(2, compt).Address & ":" & Feuil1.Cells(temp, Compt).Address
        graph.SeriesCollection(1).Values = Sheets("Feuil1").Range(Plage)
        Plage = Cells(2, 1).Address & ":" & Feuil1.Cells(temp, 1).Address
        graph.SeriesCollection(1).XValues = Sheets("Feuil1").Range(Plage)
        Compt = Compt + 1
    Next graph
    Tu dis

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    extra, il fallait encore rajouter Chart. entre graph et seriescollection et ca tourne c extra !! merci pour ta patience, tu m'as bien aidé!

    reste plus qu'a transferer tout ca convenablement dans le vrai programme mais ca devrait etre bon cette fois!

    merci encore

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

Discussions similaires

  1. [XL-2010] graphique dynamique sous excel
    Par frutz dans le forum Excel
    Réponses: 6
    Dernier message: 03/06/2015, 11h56
  2. [XL-2010] Graphique dynamique sous excel
    Par frutz dans le forum Excel
    Réponses: 2
    Dernier message: 02/06/2015, 00h54
  3. [XL-2010] Graphique dynamique sous Excel 2010
    Par jimmylux dans le forum Excel
    Réponses: 1
    Dernier message: 05/04/2012, 09h55
  4. [XL-2010] Graphique dynamique sous Excel 2010
    Par jimmylux dans le forum Excel
    Réponses: 1
    Dernier message: 02/04/2012, 15h50
  5. filtrer tableau croisé dynamique sous excel
    Par kernel57 dans le forum Excel
    Réponses: 7
    Dernier message: 17/11/2006, 14h18

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