Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

bonsoir

 

je travaille sur un projet de programmation sur vb et vba de excel. J'ai rencontre des difficultes concernant le trace d'un graphe sur vb et sur vba.

 

J'ai une form sur laquelle j'ai inseres les composants suivants:

1- une spreadsheet d'excel -->name: spreadsheet1

2- un graphe excel (pas le composant chart control mais le composant microsoft office charts)-->name: chartspace1

3- un bouton pour mettre en marche la sub tracant les courbes

 

 

j'ai d'autre part trouve sur l'aide d'excel l'algorithme suivant qui permet de tracer de courbes:

 

 

Sub Window_OnLoad()

 

Dim chConstants

 

Spreadsheet1.ActiveSheet.Cells.Clear

Spreadsheet1.ActiveSheet.Cells(2, 1).Value = "Car"

Spreadsheet1.ActiveSheet.Cells(3, 1).Value = "Sport-Utility"

Spreadsheet1.ActiveSheet.Cells(4, 1).Value = "Truck"

Spreadsheet1.ActiveSheet.Cells(5, 1).Value = "Minivan"

 

Spreadsheet1.ActiveSheet.Cells(1, 2).Value = "1998"

Spreadsheet1.ActiveSheet.Cells(2, 2).Value = 0.2

Spreadsheet1.ActiveSheet.Cells(3, 2).Value = 0.06

Spreadsheet1.ActiveSheet.Cells(4, 2).Value = 0.17

Spreadsheet1.ActiveSheet.Cells(5, 2).Value = 0.13

 

Spreadsheet1.ActiveSheet.Cells(1, 3).Value = "1999"

Spreadsheet1.ActiveSheet.Cells(2, 3).Value = 0.38

Spreadsheet1.ActiveSheet.Cells(3, 3).Value = 0.82

Spreadsheet1.ActiveSheet.Cells(4, 3).Value = 0.28

Spreadsheet1.ActiveSheet.Cells(5, 3).Value = 0.62

 

Spreadsheet1.ActiveSheet.Cells(1, 4).Value = "2000"

Spreadsheet1.ActiveSheet.Cells(2, 4).Value = 0.42

Spreadsheet1.ActiveSheet.Cells(3, 4).Value = 0.12

Spreadsheet1.ActiveSheet.Cells(4, 4).Value = 0.55

Spreadsheet1.ActiveSheet.Cells(5, 4).Value = 0.25

 

' Clear the contents of the chart workspace. This removes

' any old charts that may already exist and leaves the chart workspace

' completely empty. One chart object is then added.

ChartSpace1.Clear

ChartSpace1.Charts.Add

Set chConstants = ChartSpace1.Constants

 

 

' Set the chart DataSource property to the spreadsheet.

' It is possible to specify multiple data sources, but this example uses only one.

ChartSpace1.DataSource = Spreadsheet1

 

' Add three series to the chart.

ChartSpace1.Charts(0).SeriesCollection.Add

ChartSpace1.Charts(0).SeriesCollection.Add

ChartSpace1.Charts(0).SeriesCollection.Add

 

' Connect the chart to data by specifying spreadsheet cell references

' for the different data dimensions.

' Notice that the series name is also bound to a spreadsheet cell. Changing

' the contents of the cell "B1" will also change the name that appears in the legend.

' If you don't want this behavior, set SeriesCollection(0).Caption instead of

' using the SetData method to bind the series name to the spreadsheet.

 

' Series one contains sales growth data for 1998.

' Bind the series name, the category names, and the values.

ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimSeriesNames, chConstants.chDataBound, "B1"

ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimCategories, chConstants.chDataBound, "A2:A5"

ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimValues, chConstants.chDataBound, "B2:B5"

 

' Series two contains sales growth data for 1999.

ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimSeriesNames, chConstants.chDataBound, "C1"

ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimCategories, chConstants.chDataBound, "A2:A5"

ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimValues, chConstants.chDataBound, "C2:C5"

 

' Series two contains sales growth data for 2000.

ChartSpace1.Charts(0).SeriesCollection(2).SetData chConstants.chDimSeriesNames, chConstants.chDataBound, "D1"

ChartSpace1.Charts(0).SeriesCollection(2).SetData chConstants.chDimCategories, chConstants.chDataBound, "A2:A5"

ChartSpace1.Charts(0).SeriesCollection(2).SetData chConstants.chDimValues, chConstants.chDataBound, "D2:D5"

 

' Make the chart legend visible, format the left value axis as percentage,

' and specify that value gridlines are at 10% intervals.

ChartSpace1.Charts(0).HasLegend = True

ChartSpace1.Charts(0).Axes(chConstants.chAxisPositionLeft).NumberFormat = "0%"

ChartSpace1.Charts(0).Axes(chConstants.chAxisPositionLeft).MajorUnit = 0.1

End Sub

 

 

 

 

Private Sub CommandButton1_Click()

 

Call Window_OnLoad

 

End Sub

 

 

 

cet algorithme vba donne des diagrammes en batons (ce qui est normal d'apres une source qui m'a avance que si l'on ne specifiait pas un charttype, le composant prend automatiquement comme type de trace les diagrammes en batons).

Ce que je desire faire est de :

 

1 - tracer un graphe mais avec un chartype different(courbe normale xlXYscattersmooth)

les donnees seront aquises des colonnes de la spreadsheet1.

 

2 - apres avoir resolu le premier probleme je voudrais inserer 3 courbes sur un meme graphe; les courbes prenant leurs valeurs de la spreadsheet(colonne 1 --> axe des abscisses, colonne 2 --> axe des ordonnees de la courbe1, colonne 3 --> axe des ordonnees de la courbe2 , colonne 4 --> axe des ordonnees de la courbe3).

 

 

je vous remercie bcp de me repondre cela fait quelques semaines que je reflechit a ce probleme( je ne suis pas pro en info..)

 

merci

Posté(e)

1er pb resolu:

 

on defini le type de graphe en ecrivant chartSpace1.Charts(0).Type .... avant d'ajouter des graphes

 

 

 

mais si quelqu'un aurai une idee sur comment tracer plusieurs courbes sur un meme graphique ...

 

encore merci

Posté(e)

je ne c pas si ce soir j'ai un coup de genie ou .... mais je vien de resoudre le second probleme

 

il suffit d'introduire

 

ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimXValues, chConstants.chDataBound, "A1:A5"

ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimYValues, chConstants.chDataBound, "B1:B5"

 

 

et puis faire varier le numero de la serie pour les autres courbes

  • Tonton a modifié le titre en Graphe vb ou vba

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...