Séries de données définie sur plusieurs champs nommé

Le
Franck
Bonsoir à tous,

Comment concaténer 2 ou 3 blocs de données pour former une seule série
de données dans un graph ?

ex :

zonecoul1 = "=données!bloc" & tabparamvar(i) & tabpériode(1)

zonecoul2 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(2)

zonecoul3 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!blocaxey" & tabpériode(2) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(3)
With ActiveChart
.SeriesCollection(1).Select
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul1)
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(3)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul2)
.Border.ColorIndex = 4
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul3)
.Border.ColorIndex = 5
.Border.Weight = xlMedium
End With
End With

Cela de marche pas pour "zonecoul2" (2 blocs)
ni pour "zonecoul3" (3blocs).

Pourtant en manuel (hors VBA), on peut facilement
sélectionner différents blocs en maintenant la touche CTRL appuyée.

Doit-on passer par SeriesCollection.Extend ?

Si c'est le cas comment faire ?

Merci pour vos réponses.

Franck.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FxM
Le #1343219
Bonsoir,

Essaie avec des union(range1,range2,range3,...)

zonecoul2 = union(sheets("données").range("blocaxey" & tabpériode(1) ,_
sheets("données").range("blocaxey" & tabpériode(2))

@+
FxM





Franck wrote:

Bonsoir à tous,

Comment concaténer 2 ou 3 blocs de données pour former une seule série
de données dans un graph ?

ex :

zonecoul1 = "=données!bloc" & tabparamvar(i) & tabpériode(1)

zonecoul2 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(2)

zonecoul3 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!blocaxey" & tabpériode(2) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(3)
With ActiveChart
.SeriesCollection(1).Select
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul1)
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(3)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul2)
.Border.ColorIndex = 4
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul3)
.Border.ColorIndex = 5
.Border.Weight = xlMedium
End With
End With

Cela de marche pas pour "zonecoul2" (2 blocs)
ni pour "zonecoul3" (3blocs).

Pourtant en manuel (hors VBA), on peut facilement
sélectionner différents blocs en maintenant la touche CTRL appuyée.

Doit-on passer par SeriesCollection.Extend ?

Si c'est le cas comment faire ?

Merci pour vos réponses.

Franck.





Franck
Le #1329251
Merci pour ta réponse.

J'ai fait de nombreux essais, mais cela ne marche toujours pas.
Doit t'on déclarer zonecoul2 comme "variant" ou comme "range" ?

La fonction union ne renvoi rien pour zonecoul2.

doit on bien écrire ".values=range(zonecoul2)"
L'exécution me renvoie une erreur 1004 : la méthode de l'objet range à
échouer.

Merci de ton aide

Franck.



"FxM" news:ulQ%
Bonsoir,

Essaie avec des union(range1,range2,range3,...)

zonecoul2 = union(sheets("données").range("blocaxey" & tabpériode(1) ,_
sheets("données").range("blocaxey" & tabpériode(2))

@+
FxM





Franck wrote:

Bonsoir à tous,

Comment concaténer 2 ou 3 blocs de données pour former une seule série
de données dans un graph ?

ex :

zonecoul1 = "=données!bloc" & tabparamvar(i) & tabpériode(1)

zonecoul2 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(2)

zonecoul3 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!blocaxey" & tabpériode(2) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(3)
With ActiveChart
.SeriesCollection(1).Select
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul1)
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(3)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul2)
.Border.ColorIndex = 4
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul3)
.Border.ColorIndex = 5
.Border.Weight = xlMedium
End With
End With

Cela de marche pas pour "zonecoul2" (2 blocs)
ni pour "zonecoul3" (3blocs).

Pourtant en manuel (hors VBA), on peut facilement
sélectionner différents blocs en maintenant la touche CTRL appuyée.

Doit-on passer par SeriesCollection.Extend ?

Si c'est le cas comment faire ?

Merci pour vos réponses.

Franck.







FxM
Le #1340240
Bonsoir Franck,

S'il n'y a rien de confidentiel dans le fichier, je serais intéresé
d'y jeter un oeil (pas vraiment envie d'en créer un :o) ). Si c'est
OK, je t'enverrai mon adresse en BAL.

@+
FxM





Franck wrote:

Merci pour ta réponse.

J'ai fait de nombreux essais, mais cela ne marche toujours pas.
Doit t'on déclarer zonecoul2 comme "variant" ou comme "range" ?

La fonction union ne renvoi rien pour zonecoul2.

doit on bien écrire ".values=range(zonecoul2)"
L'exécution me renvoie une erreur 1004 : la méthode de l'objet range à
échouer.

Merci de ton aide

Franck.



"FxM" news:ulQ%

Bonsoir,

Essaie avec des union(range1,range2,range3,...)

zonecoul2 = union(sheets("données").range("blocaxey" & tabpériode(1) ,_
sheets("données").range("blocaxey" & tabpériode(2))

@+
FxM





Franck wrote:


Bonsoir à tous,

Comment concaténer 2 ou 3 blocs de données pour former une seule série
de données dans un graph ?

ex :

zonecoul1 = "=données!bloc" & tabparamvar(i) & tabpériode(1)

zonecoul2 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(2)

zonecoul3 = "=données!blocaxey" & tabpériode(1) & ";" & _
"données!blocaxey" & tabpériode(2) & ";" & _
"données!bloc" & tabparamvar(i) & tabpériode(3)
With ActiveChart
.SeriesCollection(1).Select
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul1)
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(3)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul2)
.Border.ColorIndex = 4
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul3)
.Border.ColorIndex = 5
.Border.Weight = xlMedium
End With
End With

Cela de marche pas pour "zonecoul2" (2 blocs)
ni pour "zonecoul3" (3blocs).

Pourtant en manuel (hors VBA), on peut facilement
sélectionner différents blocs en maintenant la touche CTRL appuyée.

Doit-on passer par SeriesCollection.Extend ?

Si c'est le cas comment faire ?

Merci pour vos réponses.

Franck.












Franck
Le #1340229
Bonsoir FXM

Je te remercie d'avance pour t'intéresser à mon petit soucis.

La partie du code concernée est à la suite de mes remarques.

Le but de cette procédure est de faire apparaître en couleur 3 périodes
d'une courbe. Par exemple, sur un enregistrement de 3 heures, faire
apparaître en rouge la première heure, en vert la seconde et en bleu
la troisième. Il suffit donc de récupérer chaque période de les nommer
sur la feuille de calcul, puis d'attribuer un nouvelle série pour chaque
période.
Le problème est que ces 3 séries démarrent toutes à gauche à la même
abscisse alors qu'elles devraient se suivre chronologiquement.
La p2 devrait être à la suite de la p1 et la p3 à la suite de la p2.
La solution que j'ai trouvé c'est de rajouter un bloc de cellules vides
avant la p2 (celui ci ayant le même nbr de ligne que la p1)
et 2 blocs de cellules vides avant la p3 (ceux ci correspondant au
même nbr de ligne que p1 et p2)

On vient donc tester une case à option (c_triplement) afin de savoir si l'on
doit
oui ou non tracer ces 3 périodes en couleurs.

zonecoul1 correspondant au champ nommé sur la feuille de calcul de la
période 1
et idem pour zonecoul2 et zonecoul3.

En fait, les vraies données à tracer sont dans les champs nommés :
"données!bloc" & tabparamvar(i) & tabpériode(1)
"données!bloc" & tabparamvar(i) & tabpériode(2)
"données!bloc" & tabparamvar(i) & tabpériode(3)

les 2 champs suivant correspondent aux champs de cellules vides
rajoutés avant les vrais bloc de données pour que ce fasse
le traçage chronologique.
"données!blocaxey" & tabpériode(1)
"données!blocaxey" & tabpériode(2)

La macro bloque ici " .Values = Range(zonecoul2) " et donne
l'erreur 1004, la méthode de l'objet range à échouer.

La technique de rajout de cellule vide avant un bloc de données
fonctionne très bien manuellement mais pas en VBA.

L'union des blocs ne fonctionne pas pour zonecoul2 et zonecoul3.

zonecoul 1 2 et 3 sont déclarés en Variant.

If c_triplement = True And périod = "p0" Then
zonecoul1 = "=données!bloc" & tabparamvar(i) & tabpériode(1)
zonecoul2 = Union(Sheets("données").Range("blocaxey" &
tabpériode(1)), _
Sheets("données").Range("bloc" & tabparamvar(i) &
tabpériode(2)))
zonecoul3 = Union(Sheets("données").Range("blocaxey" &
tabpériode(1)), _
Sheets("données").Range("blocaxey" & tabpériode(2)),
_
Sheets("données").Range("bloc" & tabparamvar(i) &
tabpériode(3)))
With ActiveChart
.SeriesCollection(1).Select
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul1)
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(3)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul2)
.Border.ColorIndex = 4
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul3)
.Border.ColorIndex = 5
.Border.Weight = xlMedium
End With
End With
End If

Voilà mon problème, surement une erreur toute bête, comme une erreur de
synthaxe,
mais là, je ne vois pas...

Merci de ton aide

Franck.

"FxM" news:
Bonsoir Franck,

S'il n'y a rien de confidentiel dans le fichier, je serais intéresé
d'y jeter un oeil (pas vraiment envie d'en créer un :o) ). Si c'est
OK, je t'enverrai mon adresse en BAL.

@+
FxM



FxM
Le #1340227
Re-bsr,

Je ne te cacherai pas ne pas avoir tout compris :o)
Tu as du courrier.

@+
FxM



Franck wrote:

Bonsoir FXM

Je te remercie d'avance pour t'intéresser à mon petit soucis.

La partie du code concernée est à la suite de mes remarques.

Le but de cette procédure est de faire apparaître en couleur 3 périodes
d'une courbe. Par exemple, sur un enregistrement de 3 heures, faire
apparaître en rouge la première heure, en vert la seconde et en bleu
la troisième. Il suffit donc de récupérer chaque période de les nommer
sur la feuille de calcul, puis d'attribuer un nouvelle série pour chaque
période.
Le problème est que ces 3 séries démarrent toutes à gauche à la même
abscisse alors qu'elles devraient se suivre chronologiquement.
La p2 devrait être à la suite de la p1 et la p3 à la suite de la p2.
La solution que j'ai trouvé c'est de rajouter un bloc de cellules vides
avant la p2 (celui ci ayant le même nbr de ligne que la p1)
et 2 blocs de cellules vides avant la p3 (ceux ci correspondant au
même nbr de ligne que p1 et p2)

On vient donc tester une case à option (c_triplement) afin de savoir si l'on
doit
oui ou non tracer ces 3 périodes en couleurs.

zonecoul1 correspondant au champ nommé sur la feuille de calcul de la
période 1
et idem pour zonecoul2 et zonecoul3.

En fait, les vraies données à tracer sont dans les champs nommés :
"données!bloc" & tabparamvar(i) & tabpériode(1)
"données!bloc" & tabparamvar(i) & tabpériode(2)
"données!bloc" & tabparamvar(i) & tabpériode(3)

les 2 champs suivant correspondent aux champs de cellules vides
rajoutés avant les vrais bloc de données pour que ce fasse
le traçage chronologique.
"données!blocaxey" & tabpériode(1)
"données!blocaxey" & tabpériode(2)

La macro bloque ici " .Values = Range(zonecoul2) " et donne
l'erreur 1004, la méthode de l'objet range à échouer.

La technique de rajout de cellule vide avant un bloc de données
fonctionne très bien manuellement mais pas en VBA.

L'union des blocs ne fonctionne pas pour zonecoul2 et zonecoul3.

zonecoul 1 2 et 3 sont déclarés en Variant.

If c_triplement = True And périod = "p0" Then
zonecoul1 = "=données!bloc" & tabparamvar(i) & tabpériode(1)
zonecoul2 = Union(Sheets("données").Range("blocaxey" &
tabpériode(1)), _
Sheets("données").Range("bloc" & tabparamvar(i) &
tabpériode(2)))
zonecoul3 = Union(Sheets("données").Range("blocaxey" &
tabpériode(1)), _
Sheets("données").Range("blocaxey" & tabpériode(2)),
_
Sheets("données").Range("bloc" & tabparamvar(i) &
tabpériode(3)))
With ActiveChart
.SeriesCollection(1).Select
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul1)
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(3)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul2)
.Border.ColorIndex = 4
.Border.Weight = xlMedium
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 1
.XValues = Range(bloc_axe_x)
.Values = Range(zonecoul3)
.Border.ColorIndex = 5
.Border.Weight = xlMedium
End With
End With
End If

Voilà mon problème, surement une erreur toute bête, comme une erreur de
synthaxe,
mais là, je ne vois pas...

Merci de ton aide

Franck.

"FxM" news:

Bonsoir Franck,

S'il n'y a rien de confidentiel dans le fichier, je serais intéresé
d'y jeter un oeil (pas vraiment envie d'en créer un :o) ). Si c'est
OK, je t'enverrai mon adresse en BAL.

@+
FxM








Publicité
Poster une réponse
Anonyme