Données source(variable) d'un graphique

talla95370 Messages postés 4 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 9 avril 2009 - 8 avril 2009 à 18:13
talla95370 Messages postés 4 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 9 avril 2009 - 9 avril 2009 à 09:44
Bonjour,

Je souhaite avant tout m'excuser si mon post n'est pas au bon endroit. J'ai essayé de le placer au mieux :)

Mon problème est le suivant :

Tout d'abord je créé un onglet s'il n'est pas déjà fait, puis sur 2 colonnes (A= Heure et B= Cours) j'ai des données qui se mettent à jour toutes les minutes.
Je souhaiterai mettre au point un graph qui tienne compte des dernières données, donc toutes les minutes.
J'ai su le faire via excel, le souci étant qu'en passant par l'enregistreur ça plante :'(
J'ai du mal à voir pourquoi et j'ai pas mal cherché sur le net mais pas de réponse.

1] Je créé l'onglet et le nom de la plage de donnée
Cette fonction marche correctement.

Public dday, mmonth As Variant
Private Function add_fle()
        If Day(Now()) < 10 Then
            dday = "0" & Day(Now())
            Else: dday = Day(Now())
        End If
        If Month(Now()) < 10 Then
            mmonth = "0" & Month(Now())
            Else: mmonth = Month(Now())
        End If
        If Sheets(Sheets.Count).Name <> dday & "-" & mmonth Then
            Sheets.Add , Sheets(Sheets.Count)
                a = dday & "-" & mmonth
                ActiveSheet.Name = a
                    Range("A1").Value = "HEURE"
                    Range("B1").Value = "COURS"
                ActiveWorkbook.Names.Add Name:="Cours" & dday & mmonth, RefersTo:="=DECALER('" & a & "'!$B$1,NBVAL('" & a & "'!$B:$B)-1,,-NBVAL('" & a & "'!$B:$B)+1)"
                ActiveWorkbook.Names.Add Name:="Heure" & dday & mmonth, RefersTo:="=DECALER('" & a & "'!$A$1,NBVAL('" & a & "'!$A:$A)-1,,-NBVAL('" & a & "'!$A:$A)+1)"

        End If
End Function

2] Je mets à jour les données
Ca fonctionne aussi

3] Je dessine le graph sur la nouvelle feuille :

Private Function Do_Graph()

            With ActiveWorkbook.Worksheets(Sheets.Count)
                Set graph = .ChartObjects.Add(200, 100, 500, 300)
            End With

            a = dday & mmonth

             With graph.Chart
               .SetSourceData Worksheets(Sheets.Count).Range("A1:B1")
               .HasTitle = True
               .ChartTitle.Text = "Cours du CAC 40 Intraday"
               .ChartType = xlLineMarkers
               .SeriesCollection(1).Formula = "=CAC.xls!Heure" & a
            End With

End Function

C'est là que le plantage a lieu.
J'aimerai paramétrer la plage variable dans les données source du graph, mais ça ne marche pas :'(

Merci d'avance pour votre aide.

Ray

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 avril 2009 à 18:42
Salut
Catégorie modifiée --> Mémorise pour la prochaine fois

Si ça plante, il doit y avoir un numéro d'erreur et une description : laquelle ?
Sur quelle ligne ?

Dans tes premières lignes, tu définis un nom à des plages appartenant à une feuille (si j'ai bien compris)
   Name:="Cours" & dday & mmonth

Dans Do_Graph, je ne vois nulle part de référence à la feuille ni au nom précédemment défini.
Faudrait peut-être commencer par là

Si j'ai bien compris, ton Chart est défini dans la dernière feuille : 
   With ActiveWorkbook.Worksheets(Sheets.Count)
puis tu lui dit d'aller chercher les données sur cette même feuille, et dans des deux seules cellules A1 et B1
   .SetSourceData Worksheets(Sheets.Count).Range("A1:B1")
--> Sélectionner la bonne feuille source de données
--> Remplacer "A1:B1" par le nom de la plage

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
talla95370 Messages postés 4 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 9 avril 2009
9 avril 2009 à 09:29
Hello Jack et merci pour ton aide.

Toutefois ça ne fonctionne pas malgré les modifs.

En effet le graph se place automatiquement sur la dernière feuille et les données y sont également.

Le problème avec la plage c'est qu'elle croît tout au long de la journée (1 feuille / jour), j'ai tester en sélectionnant les colonnes A et B mais ça ne fonctionne pas mieux.

Le problème doit venir de là : .SeriesCollection(1).Formula = "=CAC.xls!Heure" & a
J'ai l'impression qu'il n'autorise pas les noms variable. J'ai essayé avec .SeriesCollection(1).XValues et Formula ça plante aussi.

D'autres idées peut-être?
0
talla95370 Messages postés 4 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 9 avril 2009
9 avril 2009 à 09:42
Il s'agit d'une erreur 1004 sur cette ligne :
.SeriesCollection(1).XValues

Pour m'expliquer un peu mieux :

http://www.casimages.com

Encore merci.
0
talla95370 Messages postés 4 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 9 avril 2009
9 avril 2009 à 09:44
Euh image non insérée ;)

En résumé, dans l'onglet SERIE des données sources du graph, il m'enregistre en Valeurs la plage en "dur" alors que j'aimerai y insérer le nom de ma série qui est variable.

Courage !
0
Rejoignez-nous