OVH Cloud OVH Cloud

Insérer automatiquement des courbes dans un graphique

3 réponses
Avatar
Bonjour,

J'ai une feuille excel où j'ai placé 1 graphe (Zone de graphique).
Sur cette même feuille j'ai mes données.
Je souhaiterais grâce à des CheckBox dessiner ou suprrimer (ou alors faut-il
afficher et masquer) des données de mon tableau.
En ce moment mon code plante : Erreur d'exécution 424 , Objet requis !
Un extrait de la structure de mon code :
If Chk1 = True Then
If CO2004CA = True Then 'Valeur de ma Checkbox
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(1).Values = "=TBB!R67C4:R67C15"
End If
If CO2004MB = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(2).Values = "=TBB!R68C4:R68C15"
End If
If CO2005CA = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(3).Values = "=TBB!R69C4:R69C15"
End If
If CO2005MB = True Then
ActiveChart.SeriesCollection.NewSeries
MsgBox (SeriesCollection.Name)
ActiveChart.SeriesCollection(4).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(4).Values = "=TBB!R70C4:R70C15"
End If
End If

MERCI DE VOTRE AIDE

3 réponses

Avatar
anonymousA
bonjour,

parce que vraisemblablement activechart ne veut rien dire pour lui.Ensuite,
je ne sais pas comment tu gères les séries (destruction/construction) mais il
faudrait être vigilant au fait que la suppression d'une série du coup fait
décaler le compteur de la collection et du coup tu peux te retrouver à
vouloir définir une série dont le N° n'existe plus.
Enfin, il peut exister une autre alternative qui consiste à crée"r toutes
les séries une bonne fois puis à simplement gérer leur visibilité en leur
faisant prendre p.e la couleur du fond et en enlevant la bordure.

exemple ci-dessous d'une telle pratique avec un diagramme en colonne avec 4
séries
Dim chson As Chart
Dim s As Series

Set chson = ActiveSheet.ChartObjects(1).Chart
Set s = chson.SeriesCollection(4)
With s
.Interior.ColorIndex = chson.PlotArea.Interior.ColorIndex
.Border.LineStyle = xlAutomatic
End With

Dans le cas de fgure qui t'interesse, on pourrait imaginer que tu as créée
tes 4 séries et quand tu veux seulement la 1ere affichée tu écris

Sub procaffiche(Num as integer)

Set chson = ActiveSheet.ChartObjects(1).Chart

for I=1 to 4
With chson.SeriesCollection(I)
if I<>Num then
.Interior.ColorIndex = chson.PlotArea.Interior.ColorIndex
.Border.LineStyle = xlnone
else
.Interior.ColorIndex =3 'couleur rouge
.Border.LineStyle = xlAutomatic
end if
End With
next

End sub
tu mets cette procédure dans les tests dans les différents If machin=true
then
sur que tu appelles ainsi

If CO2004CA = True Then procaffiche 1
If CO2004MB = True Then procaffiche 2
If CO2005CA = True Then procaffiche 3
If CO2005MB = True Then procaffiche 4

Enfin, c'est une solution comme une autre.

A+

Bonjour,

J'ai une feuille excel où j'ai placé 1 graphe (Zone de graphique).
Sur cette même feuille j'ai mes données.
Je souhaiterais grâce à des CheckBox dessiner ou suprrimer (ou alors faut-il
afficher et masquer) des données de mon tableau.
En ce moment mon code plante : Erreur d'exécution 424 , Objet requis !
Un extrait de la structure de mon code :
If Chk1 = True Then
If CO2004CA = True Then 'Valeur de ma Checkbox
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(1).Values = "=TBB!R67C4:R67C15"
End If
If CO2004MB = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(2).Values = "=TBB!R68C4:R68C15"
End If
If CO2005CA = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(3).Values = "=TBB!R69C4:R69C15"
End If
If CO2005MB = True Then
ActiveChart.SeriesCollection.NewSeries
MsgBox (SeriesCollection.Name)
ActiveChart.SeriesCollection(4).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(4).Values = "=TBB!R70C4:R70C15"
End If
End If

MERCI DE VOTRE AIDE





Avatar
PMO
Bonjour,

Si il n'y a qu'un seul graphique dans votre feuille (celle ci étant active)
ajoutez ces 2 lignes de code au début de votre procédure.

Dim C As ChartObject
Set C = ActiveSheet.ChartObjects(1)

puis dans le reste de votre code remplacez ActiveChart par C
exemple:
If CO2004CA = True Then 'Valeur de ma Checkbox
C.SeriesCollection.NewSeries
C.SeriesCollection(1).XValues = "=TBB!R66C4:R66C15"
C.SeriesCollection(1).Values = "=TBB!R67C4:R67C15"
End If
au lieu de
If CO2004CA = True Then 'Valeur de ma Checkbox
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(1).Values = "=TBB!R67C4:R67C15"
End If
--

Cordialement.

PMO
Patrick Morange



Bonjour,

J'ai une feuille excel où j'ai placé 1 graphe (Zone de graphique).
Sur cette même feuille j'ai mes données.
Je souhaiterais grâce à des CheckBox dessiner ou suprrimer (ou alors faut-il
afficher et masquer) des données de mon tableau.
En ce moment mon code plante : Erreur d'exécution 424 , Objet requis !
Un extrait de la structure de mon code :
If Chk1 = True Then
If CO2004CA = True Then 'Valeur de ma Checkbox
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(1).Values = "=TBB!R67C4:R67C15"
End If
If CO2004MB = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(2).Values = "=TBB!R68C4:R68C15"
End If
If CO2005CA = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(3).Values = "=TBB!R69C4:R69C15"
End If
If CO2005MB = True Then
ActiveChart.SeriesCollection.NewSeries
MsgBox (SeriesCollection.Name)
ActiveChart.SeriesCollection(4).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(4).Values = "=TBB!R70C4:R70C15"
End If
End If

MERCI DE VOTRE AIDE





Avatar
Merci à anonymousA et PMO, mon erreur est bien dans le fait de supprimer et
essayer de réafficher un indice qui n'existe plus.
Je vais donc masquer et afficher.

@+
<serge.g8[NOSPAM]@laposte.net> a écrit dans le message de news:
d74csf$1t0p$
Bonjour,

J'ai une feuille excel où j'ai placé 1 graphe (Zone de graphique).
Sur cette même feuille j'ai mes données.
Je souhaiterais grâce à des CheckBox dessiner ou suprrimer (ou alors
faut-il afficher et masquer) des données de mon tableau.
En ce moment mon code plante : Erreur d'exécution 424 , Objet requis !
Un extrait de la structure de mon code :
If Chk1 = True Then
If CO2004CA = True Then 'Valeur de ma Checkbox
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(1).Values = "=TBB!R67C4:R67C15"
End If
If CO2004MB = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(2).Values = "=TBB!R68C4:R68C15"
End If
If CO2005CA = True Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(3).Values = "=TBB!R69C4:R69C15"
End If
If CO2005MB = True Then
ActiveChart.SeriesCollection.NewSeries
MsgBox (SeriesCollection.Name)
ActiveChart.SeriesCollection(4).XValues = "=TBB!R66C4:R66C15"
ActiveChart.SeriesCollection(4).Values = "=TBB!R70C4:R70C15"
End If
End If

MERCI DE VOTRE AIDE