Graphes en boucle "Courbe - Histo. 2 axes"

  • Initiateur de la discussion albert
  • Date de début
A

albert

Guest
bonsoir à tous, forumiens - et à toutes, forumiennes,

Je construis un graph personnalisé - Sub GraphVolum() -, qui utilise 2 colonnes sources B2 :C2
Je remplace B2 :C2 par u = Range("B2:C2", Range("B2:C2").End(xlDown)).Address

Range(u).Select

Et dans les sources j’indique Range(u)

ActiveChart.SetSourceData Source:=Sheets("Graph").Range(u), PlotBy:= _
XlColumns

Il me reste à décaler les colonnes, j’écris Sub plages(), que je combine avec Sub GraphVolum,
Sub plages()
Dim plage As Range
i = Range("A2", Range("A2").End(xlDown)).Address
x = Range("B1", Range("B1").End(xlToRight)).Count
Cells(1, 1) = x / 2
For w = 2 To Cells(1, 1) + 1
z = w * 2 - 2
y = w * 2 - 1
u = Cells(2, z).Address
v = Cells(2, y).Address
Set plage = Range(u, Range(v))
plage.Select
Set p = Range(Selection, Selection.End(xlDown))
p.Select
'---------------
Next
End Sub

j’obtiens Sub GraphVolum2
et je remplace u par p

j’exécute pour vérifier : bogue sur
ActiveChart.SetSourceData Source:=Sheets("Graph").Range(p), PlotBy:= _
XlColumns
Alors que j’obtiens bien un graph de 2 séries…


Comment puis-je réparer afin d’obtenir 4 graphes "Courbe - Histo. 2 axes"


merci d'avance (j'ai passé le WE dessus, sans trouver)

albert
 

Pièces jointes

  • TestGraphVolum.zip
    43.7 KB · Affichages: 21
M

Mytå

Guest
Salut Albert et le Forum

Regarde avec se bout de macro cela devrait aider ton travail...

Sub Multi_Graphe()

Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Dim Col As Byte
Dim u As String

With Sheets("Graph").Range("A1")

For Col = 2 To Range("A1").End(xlToRight).Column Step 2

Set r1 = Range(Cells(2, Col), Cells(20, Col))
Set r2 = Range(Cells(2, Col + 1), Cells(20, Col + 1))
Set myMultiAreaRange = Union(r1, r2)
Set u = myMultiAreaRange.Address

' Insère ta macro Graphique ici <-------

Next Col

End With

' Reste à repositionner tes graphiques <------

End Sub

Mytå
 
A

albert

Guest
Salut Mytå et le Forum,
le résultat est excellent.
à présent il faut que je travaille sur l'inversion des colonnes...

en effet, lors de mon 1er essai, je n'ai pas vu que la plage est sélcetionnée à l'envers : série 2 = prix, (en bâtons), série 1 = volume (en ligne)

il faut que j'obtienne

série 1 = prix (en ligne)
série 2 = volume, (en bâtons)

(c'est intéressant de travailler sur des codes complexes - ou plutôt, qui me paraissent complexes - merci pour ton coup d'main)

cordialement
albert
 

Pièces jointes

  • MultiGraphA.zip
    35.4 KB · Affichages: 28
M

Mytå

Guest
Re Albert

De rien fait plaisir

et en prime une macro de positionnement de graphique

Sub Positionner_Graphique()

Dim Colonne As Byte
Dim Ligne As Byte
Dim Nbre As Byte
Dim Nbre_Colonne As Byte
Dim Nbre_Ligne As Byte

Nbre_Colonne = 6 'Variable nombre de colonne par graphique
Nbre_Ligne = 21 'Variable nombre de ligne par graphique

With Worksheets("Graph")

For Nbre = 1 To .ChartObjects().Count

Ligne = Int((Nbre - 1) / 2) * Nbre_Ligne + 1
Colonne = ((Nbre - 1) Mod 2) * Nbre_Colonne + 1

.ChartObjects(Nbre).Top = .Rows(Ligne).Top
.ChartObjects(Nbre).Left = .Columns(Colonne).Left
.ChartObjects(Nbre).Height = Nbre_Ligne * 10.5 'Hauteur en pixels de la ligne
.ChartObjects(Nbre).Width = Nbre_Colonne * 60 'Largeur en pixels (10,71 = 60)

Next Nbre

End With


End Sub

Mytå
 

Discussions similaires

Réponses
6
Affichages
545

Statistiques des forums

Discussions
312 563
Messages
2 089 681
Membres
104 252
dernier inscrit
dbsromaric