Inserer un graphique dans userform

Soyez le premier à donner votre avis sur cette source.

Vue 35 677 fois - Téléchargée 2 851 fois

Description

Bonjour,

Je programme sous VBA excel, j'ai cherché pendant quelques temps le moyen d'inserer un graphique excel dans un userform sans utilisé une technique d'image GIF mais plutôt le composant "miscrosoft Office chart 9" (MSOWC.dll).

Important :
Vous devez inserer le controle supplementaire dans la barre d'outil " Microsot Office Chart 9" et creer le graphique sur le Userform.

Source / Exemple :


Private Sub UserForm_Activate()
Dim oChart, oSeries1, oSeries2
Dim oAxis1, oAxis2, oConst
Dim S1(43), S2(43), S3(43) As Variant

'on crée les tableaux de variables
For i = 1 To 43
S1(i) = Cells(i + 1, 2)
S2(i) = Cells(i + 1, 3)
S3(i) = Cells(i + 1, 4)
Next

'on efface tout
ChartSpace1.Clear
Set oConst = ChartSpace1.Constants
' Création diagramme dans le ChartSpace
Set oChart = ChartSpace1.Charts.Add
' Ajout 1ere série de type XYscatter plot
Set oSeries1 = oChart.SeriesCollection.Add
oSeries1.Caption = "Current"
oSeries1.Type = oConst.chChartTypeScatterSmoothLine ' on peut changer le type, se reférer à l'explorateur d'objet
oSeries1.SetData oConst.chDimXValues, oConst.chDataLiteral, S1()
oSeries1.SetData oConst.chDimYValues, oConst.chDataLiteral, S2()
' Ajout 2eme série de type XYscatter plot
Set oSeries2 = oChart.SeriesCollection.Add
oSeries2.Caption = "estimate"
oSeries2.Type = oConst.chChartTypeScatterSmoothLine
oSeries2.SetData oConst.chDimXValues, oConst.chDataLiteral, S1()
oSeries2.SetData oConst.chDimYValues, oConst.chDataLiteral, S3()

' les Axes
Set oAxis1 = oChart.Axes(oConst.chAxisPositionLeft)
oAxis1.Scaling.Maximum = 0.05
oAxis1.Scaling.Minimum = 0.025
oAxis1.NumberFormat = "0.0%"
oAxis1.HasMajorGridlines = True
Set oAxis2 = oChart.Axes(oConst.chAxisPositionBottom)
oAxis2.Scaling.Maximum = 30
oAxis2.Scaling.Minimum = 0
oAxis2.NumberFormat = "0"
oAxis2.HasMajorGridlines = True
'on indiue la légende
oChart.HasLegend = True
oChart.Legend.Position = oConst.chLegendPositionBottom
'on définit la couleur de fonds
oChart.PlotArea.Interior.Color = "white"

'on peut définir toutes les propriétés supplémentaires en se référant à l'explorateur sous "spacechart"
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
25 juillet 2012

Bonjour et bravo pour la démo !

J'ai un petit soucis, cependant... Je n'arrive pas à afficher la courbe créée... Même en ayant recopié gentillement le code dans un nouveau classeur, j'ai le même problème. La zone de tracé est bien présente, la légende, le quadrillage, les axes, les couleurs : tout est bon. Sauf les courbes, que je ne vois pas. Le "Count" de la propriété "Points" est à 0 à chaque fois. Cela pourrait-il expliquer le problème ?
Y a-t-il autre chose à activer dans Excel que les contrôles "Microsoft Office Chart" pour pouvoir faire fonctionner ce code ?

(En espérant que ce topic, vieux de 5 ans déjà, soit toujours suivi :D)
Messages postés
1
Date d'inscription
vendredi 31 octobre 2008
Statut
Membre
Dernière intervention
20 avril 2009

Bonjour,

Tout d'abord je te remercie pour cette astuce du feu de Dieu....Cependant étant un super novice, j'ai une légère question:
comment fait-on pour avoir l'axe des abcisses en format "hh:mm:ss"...
j'ai réessayer encore et encore et je n'y arrive pas. Si des fois tu peux remettre le nez dans ce prog qui date, et m'indiquer une piste voire une solution, je t'en serai reconaissant.
D'avance merci.
Messages postés
3
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
4 juillet 2007

pour répondre à oliv_def,
il se peut que le composant "microsoft office chart 9" ne soit pas disponible, cela dépend de la date de "microsoft office", il faut que tu cochesle composant "microsoft office chart 10" dans la barre d'outil du userform.
Il se peut également que tu n'es plus de chartspace, a toi de le redessiner.

A bientot
Messages postés
3
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
4 juillet 2007

Bonjour,

Pour repondre à Gadzou:
_"Oconst" est un objet crée dans le code, il ne t'indiquera pas ce que tu peux déployer comme fonction, le vrai composant utilisé est chartspace, essaye avec lui.
_pour les graphiques 3D je vauis voie ce que je peux faire.
Messages postés
14
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
20 décembre 2007

Salut : j'ai un message d'erreur : "Cant' find project or library" ? Faut il des DLL specifiques ? Tu parles de MSOWC.dll , ou faut il "ranger" cette DLL pour que ton prog tourne ?
Merci d'avance !!! :-) !
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.