Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

5 réponses
Avatar
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.

5 réponses

Avatar
FxM
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.





Avatar
Franck
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" a écrit dans le message de
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.







Avatar
FxM
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" a écrit dans le message de
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.












Avatar
Franck
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" a écrit dans le message de
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



Avatar
FxM
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" a écrit dans le message de
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