Plage de données pour graphique conditionnée

grosboufLG
Messages postés
17
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
- 30 juin 2009 à 11:15
grosboufLG
Messages postés
17
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009
- 30 juin 2009 à 12:00
Bonjour à tous,
J'aurais besoin d'un coup de main s'il vous plait. En effet, je souhaite réaliser un graphique  sachant que l'étendue de la plage de données que doit traiter le graphique n'est pas connue.
En fait en fonction des données dans le fichier nous allons avoir plus ou moins de lignes à traiter dans le graphique.
J'ai donc cherché à créer une variable (LignesTableau) qui compte combien il y a de lignes dans mon tableau pour trouver la fameuse étendue (le + 4 est du au fait qu'il y ai 4lignes de passées pour le titre qui viendra après)
Or VBA n'a pas l'air d'aimer ma syntaxe (celle que je vous ai mis en rouge).
Je pense que je vais avoir le même probleme pour la légende des abscisses en vert j'ai "=Calcul!R6C1:R125C1" et il me faudrait un truc du genre "=Calcul!R6C1:RLignesTableauC1".
J'espère que vous allez pouvoir m'aider, merci d'avance

PS : je vous file la partie de ma macro concernée.

LignesTableau = Application.CountA(Range("A1:A65536")) + 4
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(5, 1), Cells(LignesTableau, 4)), , xlNo).Name = _
        "Liste1"


    Sheets("Calcul").Select
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Calcul").Range(Cells(6, 4), Cells(LignesTableau, 4)), PlotBy _
        :=xlColumns
' En fait quand je fais Range("D6:D125") ca marche nickel sauf qu'il n'y aura pas toujours de données jusque la case 125

    ActiveChart.SeriesCollection(1).XValues = "=Calcul!R6C1:R125C1"
    ActiveChart.Location Where:=xlLocationAsNewSheet
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Analyse des Ecarts"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Sous Chapitres"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Heures"
    End With

2 réponses

bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
30 juin 2009 à 11:39
Salut,

La reponse 7 questions plus bas, c'est a dire ici : http://www.vbfrance.com/forum/sujet-CREATION-GRAPHIQUE_1332305.aspx

A+
0
grosboufLG
Messages postés
17
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
16 juillet 2009

30 juin 2009 à 12:00
Merci bigfish,

Mais en fait je l'ai l'info qui me dit ou est ma dernière ligne  ( c'est ma variable LignesTableau ). Le problème que j'ai c'est au niveau de la syntaxe du Range ou peut-être même pas du Range, je sais pas d'ou vient l'erreur.


En fait quand j'écris ce que je te mets ci-dessous ça marche pas, il doit y avoir une autre syntaxe à utiliser.

ActiveChart.SetSourceData Source:=Sheets("Calcul").Range(Cells(6, 4), Cells(LignesTableau, 4)), PlotBy _
        :=xlColumns

Et pareil, comment dois-je transcrire l'info en fonction de ma variable LignesTableau pour cette commande :

ActiveChart.SeriesCollection(1).XValues = "=Calcul!R6C1:R125C1"
Je voudrais faire en sorte de remplacer le 125 par LignesTableau (parce que le 125 marche dans un exemple ou j'ai 125lignes mais pas dans les autres cas)
0