Coucou,
Question toute simple, peut on prendre les données d'un graphique à partir de 2 feuilles différentes? (si oui comment?)
Coucou,
Question toute simple, peut on prendre les données d'un graphique à partir de 2 feuilles différentes? (si oui comment?)
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..![]()
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é?![]()
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![]()
- Avant de poster,
et http://www.developpez.com/sources/
- Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
- N'oubliez pas le
![]()
- N'oubliez pas le
si la réponse vous a été utile !
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"
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![]()
- Avant de poster,
et http://www.developpez.com/sources/
- Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
- N'oubliez pas le
![]()
- N'oubliez pas le
si la réponse vous a été utile !
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 !![]()
pourquoi tu traces pas tout simplement une droite en rentrant ce code :
avec Xmin ta valeur min pour X et Xmax ta valeur max
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}"
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 !![]()
"Impossible de définir la propriété XValues de la classe Series"
![]()
T'as bien fait gaffe de pas mettre :
mais plutôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part seriescollection(1)
??
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 mettreet
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fix(Xmin)pour virer les virgules (because ce con de VBA confond "," et "." ds ce cas là
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fix(Xmax))
Ceci dit si tu veux j'ai le code pour qu'il prenne en compte le chiffre à virgule
Uop,
jvois aps trop ce que tu veux.
au niveau de la mise à jour de mon graph j'ai ca :
(le code devrait te rappeler quelquechose
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)
et les données source de mes courbes sont comme ca
=Données!$A$5:$A$8;Données!$D$5:$E$8
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![]()
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 :
Tu auras bien compris que tu dois rentrer tes propres valeurs de xmin et xmax.
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
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.
Sinon j'ai trouvé comment faire à la main (c'est une astuce de bricolage je trouve mais bon)
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 merde1. 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)
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
Moi j'aurai plutot dit : parce que ça t'arrive ?Envoyé par Elstak
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 ?
- Avant de poster,
et http://www.developpez.com/sources/
- Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
- N'oubliez pas le
![]()
- N'oubliez pas le
si la réponse vous a été utile !
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![]()
j'ai modifié comme ca. J'ai une erreur sur la ligne en rouge :
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
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?
Envoyé par illight
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![]()
Partager