Création graphique

RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009 - 18 mai 2007 à 11:12
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009 - 21 mai 2007 à 10:35
Bonjour,

je programme sous visual basic 6 et je désire créer un graphique sous excel !

Grâce à vb 6 je crée un tableau et ensuite avec les valeurs du tableau je crée un graphique! Jusque là aucun problème !

Mais ensuite je désire placer mon graphique juste en dessous de mon tableau car je veux en inserer plusieurs et les positionner de manière bien spécifique!
J'ai donc fait une macro sous excel mais lorsque je l'insère dans mon programme et l'exécute cela ne fonctionne pas !

Voici les lignes de code  :

    Dim ran As Integer
    ran = compteur + 7
          
   Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("Tableau").Range("G43")
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = "=Tableau!R8C3:R" & ran & "C3"
    ActiveChart.SeriesCollection(1).Values = "=Tableau!R8C4:R" & ran & "C4"
    ActiveChart.SeriesCollection(1).Name = "=""CW"""
    ActiveChart.SeriesCollection(2).Values = "=Tableau!R8C8:R" & ran & "C8"
    ActiveChart.SeriesCollection(2).Name = "=""CCW"""
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Tableau"
   
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Couple bloqué"
         .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "abs"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Ib (A)"
    End With
    With ActiveChart.Axes(xlCategory)
        .HasMajorGridlines = False
        .HasMinorGridlines = False
    End With
    With ActiveChart.Axes(xlValue)
        .HasMajorGridlines = True
        .HasMinorGridlines = False
    End With
    ActiveChart.HasLegend = True
    ActiveChart.Legend.Select
    Selection.Position = xlBottom
   
    ActiveSheet.ChartObjects("Tableau").Activate
    ActiveSheet.Shapes("Tableau").IncrementLeft -173.25
    ActiveSheet.Shapes("Graphiques").IncrementTop 128.25
    ActiveSheet.Shapes("Graphique 11").ScaleWidth 0.85, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 11").ScaleHeight 0.59, msoFalse,_
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 11").ScaleHeight 1.13, msoFalse, _
        msoScaleFromBottomRight
    ActiveSheet.Shapes("Graphiques").IncrementLeft -0.75
    ActiveSheet.Shapes("Graphiques").IncrementTop -15.75
    ActiveChart.Shapes.AddLine(29.25, 21.75, 387#, 24#).Select
    Selection.ShapeRange.Flip msoFlipVertical
    Selection.ShapeRange.Line.Weight = 1.5
    Selection.ShapeRange.Line.Visible = True
    Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 10
    Selection.ShapeRange.Line.Visible = msoTrue
    ActiveChart.SeriesCollection(2).Select
    With Selection.Border
        .Weight = xlThin
        .LineStyle = xlNone
    End With
    With Selection
        .MarkerBackgroundColorIndex = xlAutomatic
        .MarkerForegroundColorIndex = xlAutomatic
        .MarkerStyle = xlCircle
        .Smooth = False
        .MarkerSize = 4
        .Shadow = False
    End With
    ActiveChart.SeriesCollection(1).Select
    With Selection.Border
        .Weight = xlThin
        .LineStyle = xlNone
    End With
    With Selection
        .MarkerBackgroundColorIndex = xlAutomatic
        .MarkerForegroundColorIndex = xlAutomatic
        .MarkerStyle = xlCircle
        .Smooth = False
        .MarkerSize = 4
        .Shadow = False
    End With

Mais il ne compile pas et me dit "erreur de compilation, variable non définie en parlant de msoFalse,  msoFlip, msoLine ou msoTrue".
Pourquoi ?

J'ai cherché sur le net mais j'ai rien trouvé!

De plus lorsque je mets toutes ces lignes en commentaire, il ne compile toujours pas et le message d'erreur ce coup là est "impossible de lire la propriétéChartObjects de la classeWorksheet" en parlant de la ligne "ActiveSheet.ChartObjects("Tableau").Activate"
Je ne sais pas qu'est ce que je dois mettre à la place de Tableau !

Alors si quelqu'un pouvait me dire ce que je dois faire ou me donner une autre solution !

Merci.

18 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 11:26
Salut,

Quand tu as ce genre de message, et bien c'est que tes variables : msoFalse,  msoFlip, msoLine ou msoTrue, ne sont pas déclarées dans ton projet, soit via Dim, Set....Donc tu ne peut pas leur attribuée une "valeur", si elles n'existent pas...C'est cela prouve que tu as mis : Option Explicit

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 11:29
Oui mais je ne sais pas de quel type les définir !
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 11:32
Salut,

Et bien regarde ce que tu veux leurs attribuée comme valeur ma fois...

Si tu veux que ta variable reçoive un Boolean(False ou True)
Tu déclares comme cela : Dim MyVar As Boolean

Si tu veux que ta variable reçoive un Integer(numérique)
Tu déclares comme cela : Dim MyVar As Integer

Si tu veux que ta variable reçoive un String(Chaine de carractère)
Tu déclares comme cela : Dim MyVar As String

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 11:35
Mais je ne sais pas ce que msoFalse et le reste représente car c'est une macro que j'ai copier-coller et je ne comprends pas tout !

Je ne peux donc pas le définir!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 11:45
Salut,

Essaye avec cela :

Dim MsoTrue As Boolean
Dim MsoFalse as Boolean

Par contre je ne suis pas sûr pour les deux suivantes :

Dim MsoLine as Single
Dim MsoFlip as Single

Par contre il y a un truc que je pige pas : Tu dis j'ai fait une macro, et tu ne sais pas comment et de quel type déclarer tes variables ?
A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 11:50
Non je suis allé sous excel j'ai fait une macro (pendant l'enregistrment j'ai creer le graphique comme je voulais puis deplacer à un endroit précis) de manière à avoir le code de toute la création mais le problème c'est que vb ne compile pas le code de la macro !
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 11:54
J'ai mis ce que tu m'as dis et il ne m'embète plus sur les définitions de variable.
Maintenant c'est le second problème que j'ai exposé qui me gène!
Que dois-je mettre dans "ActiveSheet.ChartObjects("Tableau").Activate" puisqu'apparemment c'est "Tableau" qu'il n'aime pas!
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 11:57
Salut,

Je ne pense et encore une fois je ne suis pas sur, que Tableau doit peut-être correspondre au nom de ton classeur(ta feuille)..

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 11:59
Le problème (et c'est là que je suis bloqué) c'est que le nom de ma feuille est bien Tableau !!
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 mai 2007 à 12:16
Salut,

J'avoue que là je nage......Comment s'appel alors ton tableau ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 12:55
Je voudrais bien savoir pourquoi il me dit "Impossible de lire la propriété ChartObjects de la classe Worksheet"!

La feuille où est mon tableau et où je veux insérer mon graphique se nomme Tableau il est donc logique que je mette "ActiveSheet.ChartObjects("Tableau").Activate"  ?
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 12:56
Mon tableau n'a aucun nom puisque je le crée entièrement  (bordure, remplissage, etc) à l'aide de boucles!
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 13:11
Si quelqu'un connait, pourrait-il m'expliquer ces quelques lignes de code pour que je puisse essayer de résoudre ce problème car je ne comprends pas la moitié de ce que j'ai copié (surtout les mso) !  

ActiveSheet.ChartObjects("Tableau").Activate
    ActiveSheet.Shapes("Tableau").IncrementLeft -173.25
    ActiveSheet.Shapes("Graphiques").IncrementTop 128.25
    ActiveSheet.Shapes("Graphique 11").ScaleWidth 0.85, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 11").ScaleHeight 0.59, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Graphique 11").ScaleHeight 1.13, msoFalse, _
        msoScaleFromBottomRight
    ActiveSheet.Shapes("Graphiques").IncrementLeft -0.75
    ActiveSheet.Shapes("Graphiques").IncrementTop -15.75
    ActiveChart.Shapes.AddLine(29.25, 21.75, 387#, 24#).Select
    'Selection.ShapeRange.Flip msoFlipVertical
    Selection.ShapeRange.Line.Weight = 1.5
    Selection.ShapeRange.Line.Visible = True
    'Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 10
    Selection.ShapeRange.Line.Visible = msoTrue

Merci !
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 14:13
Surtout ne pas faire attention à "Tableau" ou "Graphique 11"!

Tableau c'est moi qui l'ai mis pensant que c'était ça et graphique 11 c'est la macro qui l'a mise!

C'est justement sur ce que je dois mettre à cet endroit que j'ai besoin d'aide
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
18 mai 2007 à 14:15
Bonjour

J'arrive après la bataille (repas oblige) mais pour qu'il n'y ait pas de problème de compilation tant pour les données mso... que pour les objets CharObjects,.... , j'ai vu globalement la discussion, il faut peut être référencer Excel en VB6 Projets/Références ou en VBA Outils/Références.


 
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 14:18
J'ai déjà réferencé excel mais après ne connaissant pas les mso je ne sais pas quoi choisir dans les réferences !
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
18 mai 2007 à 14:52
Et j'ai oublié de dire que les 7 dernières lignes du code précédent permettent de faire des traits sur le graphiques!

Mais pour celles là aussi je ne comprends pas tout
0
RS8 Messages postés 100 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 15 juillet 2009
21 mai 2007 à 10:35
Bonjour,

Bon j'ai réussi à créer plusieurs graphiques !

Maintenant le problème est que je veux tracer des traits sur mon graphique mais je n'y arrive pas !

Voilà le code que j'utilise :

        ActiveChart.Shapes.AddLine(108#, 106.5, 141.75, 108.75).Select
        Selection.ShapeRange.Flip msoFlipVertical
        Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13
        Selection.ShapeRange.Fill.Visible = msoTrue
        Selection.ShapeRange.Fill.Solid
        Selection.ShapeRange.Line.ForeColor.SchemeColor = 10
        Selection.ShapeRange.Line.Visible = msoTrue
        Selection.ShapeRange.Line.Weight = 1.5
        Selection.ShapeRange.Line.Visible = msoTrue
        Selection.ShapeRange.Line.Style = msoLineSingle

Quelqu'un peut-il m'expliquer les différentes méthodes et pourquoi ça ne marche pas ?

Merci.
0
Rejoignez-nous