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 15
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
Rejoignez-nous