Graphique sur Chartspace - UserForm - Problème tracé plage de données

Alvin58

XLDnaute Nouveau
Bonjour à tous,

nouveau sur le forum et novice en Visual Basic et utilisation de UserForm je viens faire appel à vos compétences pour m'aider, je l'espère, à résoudre mon problème.

Je réalise actuellement une simulation du fonctionnement d'un moteur thermique 4 temps. Afin de rendre simple l'accès aux différents paramètres et au fonctionnement en général à une personne n'ayant pas de grandes connaissances dans le milieu, je réalise une interface via un UserForm où l'utilisateur n'a qu'à entrer ses données d'entrée et en cliquant simplement sur un bouton il obtient les résultats de l'ensemble des calculs ainsi que les graphiques correspondants.

Le point graphique est justement là où se trouve mon problème. J'ai réussi à tracer les différents graphiques dont j'avais besoin en utilisant le ChartSpace mais un seul me bloque à l'heure actuelle.

En effet, un de mes graphiques représente un Diagramme PV (ou Beau de Rochas pour les intimes, étant un moteur essence). Je me permet de préciser le type de graphique car vous pourrez ainsi comprendre ce dont je parle par la suite, si vous connaissez ou chercherez sur le net (j'en met un exemple en pièce jointe malgré tout).

Mon problème est le suivant : l'axe des abscisses représente l'évolution du volume, l'axe des ordonnées la pression au sein du cylindre. J'ai donc deux plages de valeurs à exploiter. Un cycle moteur 4 temps de déroulant sur 720° vilebrequin, ces plages sont donc constituées de 720 valeurs.
Seulement, la pression évolue bien pendant ces 720 points, MAIS, le volume lui, n'évolue concrètement que sur les 180 premiers points car il représente le déplace du piston du Point Mort Haut (PMH) au Point Mort Bas (PMB), puis le piston remonte du PMB vers le PMH, la valeur du volume est donc la même que précédemment mais dans l'autre sens.
Ainsi, pour une valeur du volume en axe x, je me retrouve avec plusieurs valeurs de pression en axe y. Et c'est là où réside mon problème !

J'utilise actuellement le code suivant :

Sub CreateChart_BDR()

Dim Chart8 As ChChart
Dim Series1 As ChSeries
Dim r As Integer
Dim XValues(0 To 20000)
Dim YValues(0 To 20000)
Dim oConst

Set Chart8 = ChartSpace8.Charts.Add

With Chart8

.HasTitle = True
.Title.Caption = "Cycle BDR"
.Title.Font.Size = 11
.Title.Font.Bold = True
.HasLegend = True
.Legend.Position = chLegendPositionTop
.Type = chChartTypeLine

End With

For r = 1 To 720

XValues(r) = Range("V_BDR").Cells(r).Value
YValues(r) = Range("P_BDR").Cells(r).Value

Next r

Set Series1 = Chart8.SeriesCollection.Add

With Series1

.Caption = "P_BDR=f(V_BDR)"
.Type = chChartTypeLine
.SetData chDimCategories, chDataLiteral, XValues
.SetData chDimValues, chDataLiteral, YValues

End With

Set oConst = ChartSpace8.Constants

Set XAxes = Chart8.axes(oConst.chAxisPositionBottom)

With XAxes

.HasTitle = True
.Title.Caption = "Cylindrée moteur (m^3)"
.Title.Font.Size = 9
.Scaling.Minimum = 0
.Scaling.Maximum = 300
.MinorUnit = 10
.MajorUnit = 10

End With

Set Axis1 = Chart8.axes(oConst.chAxisPositionLeft)

With Axis1

.HasTitle = True
.Title.Caption = "Pression cylindre (Pa)"
.Title.Font.Size = 9

End With

End Sub


J'obtiens bien un graphique mais pas comme je le souhaite. En effet le ChartSpace n'intègre pas le fait que des valeurs en abscisse sont redondantes, qu'il faut la garder et placer le nouveau point sur l'axe y (d'un côté ce que j'obtiens est totalement logique, le code lui demande de faire ça, il le fait...).

Je ne sais donc pas comment obtenir ce que je souhaite (fichier en pièce jointe). Sachant que si je trace le graphique depuis l'outil Graphique d'Excel sur la feuille à côté de la plage de données, j'obtiens ce que je veux (je sais qu'il reste la solution d'exporter en .gif et afficher dans le UserForm mais je préfère l'obtenir par code dans le ChartSpace comme j'ai déjà réalisé les autres, si c'est possible...).

Ne faites pas attention aux valeurs en elles mêmes, ni à la mise en forme, ce point ne me pose pas problème.
J'ai juste besoin de savoir si quelqu'un connait une technique qui me permettrait d'obtenir la forme de graphique comme en pièce jointe "Cequejeveux".

Je m'excuse d'avance pour tout ce roman mais il me semblait bon de resituer mon cas pour que vous puissiez bien comprendre.

Je vous remercie tous d'avance, que la solution soit apportée ou non, pour le temps que vous prendrez à répondre à ma requête.

A très bientôt !

Alvin

PS : je ne peux pas joindre le fichier Excel car confidentiel, et j'utilise donc la version 2003 car imposée.
 

Pièces jointes

  • Cequejobtiens.jpg
    Cequejobtiens.jpg
    40.1 KB · Affichages: 96
  • Cequejeveux.jpg
    Cequejeveux.jpg
    36.4 KB · Affichages: 106

Alvin58

XLDnaute Nouveau
Re : Graphique sur Chartspace - UserForm - Problème tracé plage de données

Bonjour,

merci pour votre réponse.

Je joins un fichier excel reprenant les valeurs que je souhaite exploiter avec le graphique (obtenu par l'outil graphique d'excel) que je souhaite obtenir dans le ChartSpace présent dans mon UserForm.

En espérant que c'est cela dont vous me parliez.

Encore merci.

Alvin
 

Pièces jointes

  • DiagrammePV.xls
    58.5 KB · Affichages: 54

Modeste geedee

XLDnaute Barbatruc
Re : Graphique sur Chartspace - UserForm - Problème tracé plage de données

:(:confused::mad:
cela correspond exactement à ce que tu veux ... !!! :rolleyes:
il s'agit d'un graphe en nuages de points :
Capture.jpg
il suffit juste maintenant nous dire comment tu obtiens ces valeurs, que tu calcules toi-même je suppose ... !
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    76 KB · Affichages: 104
  • Capture.jpg
    Capture.jpg
    76 KB · Affichages: 106

Alvin58

XLDnaute Nouveau
Re : Graphique sur Chartspace - UserForm - Problème tracé plage de données

Le graphique présent à côté de la plage de données a été obtenu par l'outil graphique en nuage de points, oui, c'est moi même qui l'ai apposé.
Ce que je veux, c'est obtenir ce graphique dans mon UserForm codé en Visual Basic (sans passer par un enregistrement en .gif par exemple), dans un ChartSpace.

Sachant ça, la façon dont ces valeurs sont obtenues (formules) ne sont pas nécessaires. Peu importe la façon dont c'est calculé, le code que j'ai indiqué dans mon premier message n'a besoin que de venir chercher la valeur qu'on lui demande et de l'ajouter au ChartSpace afin de tracer la courbe... Non ?
 

Alvin58

XLDnaute Nouveau
Re : Graphique sur Chartspace - UserForm - Problème tracé plage de données

Je viens de remarquer : les plages dans le code du premier message appelées "P_BDR" et "V_BDR" correspondent aux colonnes "Pression" et "Volume" du fichier excel "DiagrammePV", de la première à la dernière valeur.

Toutes mes excuses si cela a pu fausser la compréhension du problème.
 

Modeste geedee

XLDnaute Barbatruc
Re : Graphique sur Chartspace - UserForm - Problème tracé plage de données

Je viens de remarquer : les plages dans le code du premier message appelées "P_BDR" et "V_BDR" correspondent aux colonnes "Pression" et "Volume" du fichier excel "DiagrammePV", de la première à la dernière valeur.

Toutes mes excuses si cela a pu fausser la compréhension du problème.
voir également ce fil : https://www.excel-downloads.com/threads/chartspace-afficher-un-graphique-dans-un-userform.47854/
 

Discussions similaires

Statistiques des forums

Discussions
312 026
Messages
2 084 754
Membres
102 654
dernier inscrit
kulas11