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]Données d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut [VBA-E]Données d'un graphique
    Coucou,

    Question toute simple, peut on prendre les données d'un graphique à partir de 2 feuilles différentes? (si oui comment? )

  2. #2
    Expert éminent


    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
    Par défaut
    oui ... de la même maniére que lorsque tu créé un graphique.. dont les données sont dans la même feuilles... , rajoute des "séries" venant de ton autre feuille... pour avoir une idée du code généré commence par activer l'enregistreur de macro avant d'éffectuer la manip..

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Ok ca roule

    par contre, en fait les données que je voudrais rajouter sont des seuils, par exemple 0,4, je n'ai donc qu'une valeur et lorsque je la prend en nouvelle serie, il ne me met qu'un point (normal...) moi je voudrais qu'il me trace en fait la droite d'équation y=0,4 (voir la droite et non un point)

    et là bah je trouve pas comment... une idée pour ca petit renard futé?

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Moi j'ai une idée

    Dans ton tableau ou tu as les sources de ton graphique, tu rajout eune colonne (ou ligne je sais pas comment sont tes données), ou tu met 0,4 sur toutes les colonnes (ou lignes) et tu créé une nouvelle série avec comme plage celle ou tu as ton seuil

    Je sais pas si je me suis fait comprendre
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    sisi j'ai compris.

    si j'ai 4 valeur je met 0,4 0,4 0,4 0,4

    mais le souci est que l'utilisateur peut ajouter des données dans le fichier et il y a mise à jour automatique des graphiques (donc jdevrait ajouter un 0,4 encore..)

    pour le moment ces seuils sont dans une feuille cachée et sont modifiable à partir d'un userform par l'utilisateur. j'ai ca en gros :

    Nom1 seuil1
    [rien] seuil2
    Nom2 seuil3
    [rien] seuil4

    etc.. et l'utilisateur doit ajouter un valeur par jour (dans une autre feuille)
    donc je devrais ici modifier ma strcture car au boute des 365 jours, les 256 colonnes seront depassées...(nom1 seuil1 seuil1 seuil1 ....) si l'utilisateur change un seuil alors y'a plus de changement à effectuer etc... meme si ca ne prendra pas enormement plus de temps je pense

    le souci est que je devrais modifier toute ma structure de stockage des données (et de recuperation pour l'affichage dans le userform) donc je prefere trouver une solution mon "bricolage"

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    tu peux surement le faire par macro la mise à jour non ? tu met dans la cellule "=0,4" et tu tire la formule quand otn tableau est mis à jour..Enfin après ça dépend de ce que tu as a faire

    Je te dis ça parce que j'ai e le meme cas, j'avais un tableau et a droite du tableau j'ai rajouté une colonne avec une valeur fixe, et touss les jour sune ligne se rajoute au tableau donc je dois tirer ma dernière colonne pour que la graph se mette à jour
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    j'ai trouvé une piste

    j'ajoute une courbe de tendance à ma courbe (qui sera mon seuil), je vais dans l'onglet "Options" je coche "Coupe l'axe horizontal X à" je met 0,04 et hop ca me trace ma droite, faut encore que je vois avec l'enregistreur comment modifier cette valeur !

  8. #8
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    pourquoi tu traces pas tout simplement une droite en rentrant ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     ActiveChart.SeriesCollection(1).XValues = "={Xmin,Xmax}"
     ActiveChart.SeriesCollection(1).Values = "={0.4,0.4}"
    avec Xmin ta valeur min pour X et Xmax ta valeur max

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Oula,

    oubliez ce que j'ai dit juste avant c'est nimporte quoi

    ca me parraissait bizarre aussi d'apres le nom... "coupe l'axe des x", j'ai pas fait gaffe, j'ai mi 0,4 et ca tombait pile sur y=0,4 mais c'etait un pur hasard...



    jvais tester ton idée comcombre !

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    "Impossible de définir la propriété XValues de la classe Series"


  11. #11
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    T'as bien fait gaffe de pas mettre :

    mais plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    seriescollection(Nom de ta série)
    ??

    Je dis ça à tt hasard parceque des fois on fait des erreurs bêtes

    Sinon je vois pas pkoi ça marcherait pas sachant que chez moi ça tourne très bien...

    Juste un truc dans Xmin et Xmax tu dois mettre des valeurs pas des range.

    Et pi aussi fait gaffe si ton Xmin et ton Xmax st des décimaux alors ça va se compliquer. Vu que tu veux juste une représentation graphique, je te conseille de mettre et pour virer les virgules (because ce con de VBA confond "," et "." ds ce cas là )

    Ceci dit si tu veux j'ai le code pour qu'il prenne en compte le chiffre à virgule

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Uop,

    jvois aps trop ce que tu veux.

    au niveau de la mise à jour de mon graph j'ai ca :

    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 MAJ_GRAPH(ByVal DerniereLigne As Long, ByVal NumeroGraph As Byte)
     
      Sheets(1).Select
      NoCol1 = 1
      NoLigne1 = 5
      NoCol2 = 1
      NoLigne2 = DerniereLigne
      plage = Sheets(1).Range(Cells(NoLigne1, NoCol1), Cells(NoLigne2, NoCol2)).Address
      NoCol1 = 2 * NumeroGraph
      NoLigne1 = 5
      NoCol2 = 2 * NumeroGraph + 1
      NoLigne2 = DerniereLigne
      plage = plage + "," + Sheets(1).Range(Cells(NoLigne1, NoCol1), Cells(NoLigne2, NoCol2)).Address
     
      Charts(NumeroGraph).Select
      ActiveChart.SetSourceData Source:=Sheets(1).Range(plage), PlotBy:=xlColumns
     
    End Sub
    (le code devrait te rappeler quelquechose )

    et les données source de mes courbes sont comme ca

    =Données!$A$5:$A$8;Données!$D$5:$E$8

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Mouarf je me perd là j'ai fait nimporte quoi je pense
    (ta pas interet à dire comme dab vilain dodo, jte vois venir ! )

    en fait là je t'ai donné le code qui trace mes courbes ( et non mes seuils)

    pour les suils moi j'avais jsu mis ca dans une procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ActiveChart.SeriesCollection(1).XValues = "={Xmin,Xmax}"
     ActiveChart.SeriesCollection(1).Values = "={0.4,0.4}"


    Je m'endors là j'ai trop mangé ce midi

    jveux bien un exemple entier comcombre

  14. #14
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    lol effectivement si t'avais mis juste ça et ben je crois (en fait non je suis sûr ) que c'est normal que ça plante

    Ton graphique doit bien avoir un nom?? On dira que c'est "graph", le code serait alors le suivant :

    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
    Sub Test()
     
        Dim XmiN, XmaX As Double
        Dim NbSeries, J As Integer
     
        XmiN = 127.35
        XmaX = 289.3
     
        ActiveSheet.ChartObjects("graph").Activate
        NbSeries = ActiveChart.SeriesCollection.Count
     
        For J = 1 To NbSeries
            If ActiveChart.SeriesCollection(J).Name = "Seuil" Then
                ActiveChart.SeriesCollection("Seuil").Delete
                Exit For
            End If
        Next J
     
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(NbSeries + 1).Name = "Seuil"
        ActiveChart.SeriesCollection("Seuil").XValues = "={" & Fix(XmiN) & "," & Fix(XmaX) & "}"
        ActiveChart.SeriesCollection("Seuil").Values = "={0.4,0.4}"
     
    End Sub
    Tu auras bien compris que tu dois rentrer tes propres valeurs de xmin et xmax.
    Ce code détecte si une série "Seuil" existe déjà et si oui l'efface, puis rajoute une série appelée "Seuil" sur ton graphique.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Sinon j'ai trouvé comment faire à la main (c'est une astuce de bricolage je trouve mais bon)

    1. Entre dans deux cellules adjacentes la valeur du seuil (cette valeur peut
    être le résultat d'une formule il faut juste avoir la même valeur dans deux
    cellules voisines)
    2. Copie ces cellules, sélectionne le graphique
    3. Collage spécial pour ajouter la nouvelle série (par colonnes ou par lignes
    suivant leur agencement). (a ce stade pas de ligne c'est normal).
    4. Sélectionne la nouvelle série, clic droit
    5. Va dans graphique/type de graphique et sélectionne une ligne sans marques
    de valeurs. A ce stade, tu obtiens un bout de ligne horizontale à la bonne
    hauteur mais qui ne va pas d'un coté à l'aitre de ton graphe (pas beau)
    6. Sélectionne la série
    7. Va dans le menu format/Format des séries sélectionnées/ Onglet des axes
    et sélectionne axe secondaire
    8. Sélectionne le graphique
    9. Dans le menu graphique/options du graphique/onglet des axes
    10. coche axe secondaire des X
    11. décoche axe secondaire des Y
    12.Sélectionne l'axe secondaire des X
    13. dans le menu format/ Format de l'axe sélectionné/échelle
    14. décoche toutes les options concernant les croisement des axes
    15. va dans l'onglet motifs
    16. Vérifie que "aucun" est sélectionné pour les marques de graduations
    principales, secondaires, les étiquettes et l'axe
    mais ca ne me satisfait pas entierement car là j'ai une droite qui aprcourt tout le graphique (là n'est pas le probleme) mais pour ca je doit modifier la graduation de l'axe secondaire de X et moi j'ai 2 courbe sur mon graph (plus les 2 seuils que je veux mettre) et leurs valeurs sont différentes donc j'utilisait 2 axe des Y pour avoir 2 graduations différentes, or maintenant lorsque j'associe ma courbe à l'axe secondaire, elle parcourt tout le graph (comme les droites des seuils) et l'axe des Y (secondaire) ne pernd plus ses valeurs en fonction de celles de ma seclonde courbe qui lui est ratachée (bref c'est la merde )

    Mon graph avant :

    Pièce jointe 3039

    Mon graph avec seuil sans selectionner l'axe secondaire (on voit mal la courbe cpu car les valeur sont plus petites et laxe des Y secondaire prend des valeur je ne sais pas comment...)
    Pièce jointe 3042

    et si je choisi l'axe secondaire pour ma seconde courbe j'ai ca

    Pièce jointe 3040


    donc pas super

  16. #16
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Tu as essayé ce que je t'ai filé?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    ok comcombre je vasi tester ca

  18. #18
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Citation Envoyé par Elstak
    Mouarf je me perd là j'ai fait nimporte quoi je pense
    (ta pas interet à dire comme dab vilain dodo, jte vois venir ! )
    Moi j'aurai plutot dit : parce que ça t'arrive ? m'enfin c'est personnel a moi meme

    Sinon pour ton seuil, tu veux pas utiliser une dernière colonne ou tu mettra toujours la meme valeur ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    hmmm désolé si ces questions sont connes mais là j'ai 1/4 de cerveau qui n'est deja pas performant quand je l'ai en entier


    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
    Sub Test()
    
        Dim XmiN, XmaX As Double
        Dim NbSeries, J As Integer
    
        XmiN = 0.04
        XmaX = 0.04
    
        ActiveSheet.ChartObjects("ev25").Activate
        NbSeries = ActiveChart.SeriesCollection.Count
        
        For J = 1 To NbSeries
            If ActiveChart.SeriesCollection(J).Name = "Seuil" Then
                ActiveChart.SeriesCollection("Seuil").Delete
                Exit For
            End If
        Next J
        
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(NbSeries + 1).Name = "Seuil"
        ActiveChart.SeriesCollection("Seuil").XValues = "={" & Fix(XmiN) & "," & Fix(XmaX) & "}"
        ActiveChart.SeriesCollection("Seuil").Values = "={0.4,0.4}"
    
    End Sub
    j'ai modifié comme ca. J'ai une erreur sur la ligne en rouge :

    impossible de lire la propriete chartsobjects de la classechart

    ensuite quelques questions...

    c'est quoi ca : Fix(XmiN) ?

    les Xvalues ce sont les valeur de l'axe des X et les values des Y?

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Citation Envoyé par illight
    Sinon pour ton seuil, tu veux pas utiliser une dernière colonne ou tu mettra toujours la meme valeur ?

    comprend pas... une colonne encore? là pour mon exemple que j'ai cité au dessus j'ai du ajouter une colonne

    Nom1 Seuil1 Seuil1
    [rien] Seuil2 Seuil2


    comme ca car il faut au moins valeurs pour faire une droite j'ai l'impression, tu peux pas lui dire de faire un Y=0,04 direct

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2012, 18h28
  2. [VBA-E]Agrandir une plage de données d'un graphique
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/05/2007, 12h43
  3. [VBA-E] Données sources d'un graphique
    Par kawel dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/08/2006, 06h10
  4. [VBA-E] Données source d'un graphique
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 11/07/2006, 14h53
  5. [VBA-E]Récupérer chemin du fichier de données d'un graphique
    Par pimouss76 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/03/2006, 15h41

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