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

Positionnement graphiques vba

1 réponse
Avatar
milmo
Bonjour,
jeune novice, je me suis lancé dans la construction d'un programme vba il y a peu.. j'y créer des graphiques qui n'apparaissent pas tel que je voudrais sur ma feuille excel.

je créer plusieur graphique auxquels j'attribue une place bien précise sur ma feuille excel. le probleme c'est que pour que mes graphiques apparaissent la ou je le souhaite, il faut que je les ouvre dans un ordre bien précis..

Par exemple si j'ouvre le graphique 2008 sans avoir au préalable ouvert le graphique 2007 et bien mon graphique 2008 s'affiche n'importe où.. comment faire pour que mon graphique apparaissent sans que cela dépende du graphique précedent,

voici la partie du programme où le probleme se pose :
Ps : j'ai donc fait deux macro pour pouvior choisir quel graphique je désirais faire sortir

Sub Macro_Graphique_Ratios_2007()

Range("A243:A275,B243:B275,J243:J275").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A243:A275,B243:B275,J243:J275"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""Ratio frais d'appel/ressources issues de la générosité du public"""
ActiveChart.SeriesCollection(2).Name = "=""Ratio frais d'appel/dons collectés"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ratios des associations en 2007"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Associations"
.Axes(xlValue, xlPrimary).HasTitle = False
End With

ActiveChart.Legend.Select
Selection.Top = 500
Selection.Left = 10000
Selection.Width = 200
Selection.Height = 230

Dim Emplacement As Range
Dim Grph As ChartObject
Set Grph = Feuil1.ChartObjects(1)
Set Emplacement = Range("A291:N340")
With Grph
.Left = Emplacement.Left
.Top = Emplacement.Top
.Height = Emplacement.Height
.Width = Emplacement.Width
End With

ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With

End Sub

Sub Macro_Graphique_Ratios_2008()

Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A243:A275,C243:C275,K243:K275"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""Ratio frais d'appel/ressources issues de la générosité du public"""
ActiveChart.SeriesCollection(2).Name = "=""Ratio frais d'appel/dons collectés"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ratios des associations en 2008"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Associations"
.Axes(xlValue, xlPrimary).HasTitle = False
End With

ActiveChart.Legend.Select
Selection.Top = 500
Selection.Left = 10000
Selection.Height = 230
Selection.Width = 200


Dim Emplacement As Range
Dim Grph As ChartObject
Set Grph = Feuil1.ChartObjects(2)
Set Emplacement = Range("A345:N395")
With Grph
.Left = Emplacement.Left
.Height = Emplacement.Height
.Width = Emplacement.Width
.Top = Emplacement.Top
End With


ActiveSheet.ChartObjects(2).Activate
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
End Sub

1 réponse

Avatar
michel ou sam
bonjour,
si tu déclenche la macro 2008 en 1er, tu ne peux manipuler ce graphique car
tu le déclares

Set Grph = Feuil1.ChartObjects(2)

alors qu'il est en réalité ChartObjects(1)

Une fois créé, je te conseille de ne pas quitter le graphe actif pour lui
donner toutes ses caractéristiques
du style
with ActiveChart
.
.
End with

Michel

"milmo" a écrit dans le message de news:

Bonjour,
jeune novice, je me suis lancé dans la construction d'un programme vba il
y a
peu.. j'y créer des graphiques qui n'apparaissent pas tel que je voudrais
sur ma
feuille excel.

je créer plusieur graphique auxquels j'attribue une place bien précise sur
ma
feuille excel. le probleme c'est que pour que mes graphiques apparaissent
la ou
je le souhaite, il faut que je les ouvre dans un ordre bien précis..

Par exemple si j'ouvre le graphique 2008 sans avoir au préalable ouvert le
graphique 2007 et bien mon graphique 2008 s'affiche n'importe où.. comment
faire
pour que mon graphique apparaissent sans que cela dépende du graphique
précedent,

voici la partie du programme où le probleme se pose :
Ps : j'ai donc fait deux macro pour pouvior choisir quel graphique je
désirais
faire sortir

Sub Macro_Graphique_Ratios_2007()

Range("A243:A275,B243:B275,J243:J275").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData
Source:=Sheets("Feuil1").Range("A243:A275,B243:B275,J243:J275"),
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""Ratio frais d'appel/ressources
issues de la générosité du public"""
ActiveChart.SeriesCollection(2).Name = "=""Ratio frais d'appel/dons
collectés"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ratios des associations en 2007"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Associations"
.Axes(xlValue, xlPrimary).HasTitle = False
End With

ActiveChart.Legend.Select
Selection.Top = 500
Selection.Left = 10000
Selection.Width = 200
Selection.Height = 230

Dim Emplacement As Range
Dim Grph As ChartObject
Set Grph = Feuil1.ChartObjects(1)
Set Emplacement = Range("A291:N340")
With Grph
.Left = Emplacement.Left
.Top = Emplacement.Top
.Height = Emplacement.Height
.Width = Emplacement.Width
End With

ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With

End Sub

Sub Macro_Graphique_Ratios_2008()

Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData
Source:=Sheets("Feuil1").Range("A243:A275,C243:C275,K243:K275"),
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""Ratio frais d'appel/ressources
issues de la générosité du public"""
ActiveChart.SeriesCollection(2).Name = "=""Ratio frais d'appel/dons
collectés"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ratios des associations en 2008"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Associations"
.Axes(xlValue, xlPrimary).HasTitle = False
End With

ActiveChart.Legend.Select
Selection.Top = 500
Selection.Left = 10000
Selection.Height = 230
Selection.Width = 200


Dim Emplacement As Range
Dim Grph As ChartObject
Set Grph = Feuil1.ChartObjects(2)
Set Emplacement = Range("A345:N395")
With Grph
.Left = Emplacement.Left
.Height = Emplacement.Height
.Width = Emplacement.Width
.Top = Emplacement.Top
End With


ActiveSheet.ChartObjects(2).Activate
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.Size = 11
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
End Sub