Sub CréationGraphiqueIntégré()
Dim GraphiqueIntégré As ChartObject, Wsh As Worksheet
Dim n, m, a, MaxWidth As Double
Set Wsh = ThisWorkbook.Sheets("Résultat par projet")
With Wsh
If .ChartObjects.Count > 0 Then .ChartObjects.Delete
n = .Range("E43").Value
m = .Range("F43").Value
End With
'Place pour écrire l'étiquette de la série de plus grande valeur
MaxWidth = 0
Set GraphiqueIntégré = Wsh.ChartObjects.Add(Left:=100, Width:=400, Top:=700, Height:=200)
GraphiqueIntégré.Name = "Graphique Intégré"
With GraphiqueIntégré.Chart
.SetSourceData Source:=Sheets("Résultat par projet").Range("P1:BB1" & ",P" & n & ":" & "BB" & n)
.HasLegend = False
.ChartType = xlColumnClustered
.SetElement (msoElementDataLabelOutSideEnd)
For Each Série In .SeriesCollection
'(pour ajustement des tailles Graphe et PlotArea)
a = Série.Values
MaxVal = WorksheetFunction.Max(a(1), MaxVal)
If a(1) = MaxVal Then MaxWidth = WorksheetFunction.Max(Série.DataLabels(1).Width, MaxWidth)
'Mise en forme des étiquettes (nom de série écrit verticalement)
With Série.DataLabels
.ShowValue = False
.ShowSeriesName = True
.Orientation = xlUpward
End With
Next
End With
'Ajustements pour avoir toutes les étiquettes entièrement au dessus des séries
With GraphiqueIntégré
.Height = .Height + MaxWidth
With .Chart.PlotArea
.Height = .Height - MaxWidth
.Top = .Top + MaxWidth
End With
End With
End Sub