1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| Sub grapheeuro()
'
' grapheeuro Macro
' Création du graphe en euro
Sheets("BD").Select 'On sélectionne la feuille BD
Dim DV As String ' On crée la variable DV
For J = 2 To 100 ' On parcours une boucle qui sélectionne chaque onglet DV
If Range("B" & J).Value <> "" Then
DV = Range("B" & J).Value
Sheets(DV).Select
Cells.Select
Cells.EntireColumn.AutoFit 'On spécifie des valeurs de largeur de colonne pour la mise en forme
Columns("J:J").Select
Selection.ColumnWidth = 2
Columns("K:U").Select
Selection.ColumnWidth = 10.78
Range("O1").Select
For I = 1 To 600 'On crée une boucle qui parcourt la colonne O. A chaque fois qu'il y a un "1" (ce qui correspond à une DV ou MU), on crée un graphe.
If Range("O" & I).Value = "1" Then
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select 'Création d'un graphe avec barres empilées
With ActiveChart ' on supprime la première série générée automatiquement par excel
Do Until .SeriesCollection.Count = 0
.SeriesCollection(1).Delete
Loop
End With
'On crée les séries du graphe
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).Name = "Mois N"
ActiveChart.FullSeriesCollection(1).Values = ActiveSheet.Range("B" & I + 8 & ",B" & I + 9 & ",B" & I + 10 & ",B" & I + 11 & ",B" & I + 18 & ",B" & I + 20)
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "Mois N-1"
ActiveChart.FullSeriesCollection(2).Values = ActiveSheet.Range("C" & I + 8 & ",C" & I + 9 & ",C" & I + 10 & ",C" & I + 11 & ",C" & I + 18 & ",C" & I + 20)
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "Année N"
ActiveChart.FullSeriesCollection(3).Values = ActiveSheet.Range("D" & I + 8 & ",D" & I + 9 & ",D" & I + 10 & ",D" & I + 11 & ",D" & I + 18 & ",D" & I + 20)
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(4).Name = "Année N-1"
ActiveChart.FullSeriesCollection(4).Values = ActiveSheet.Range("E" & I + 8 & ",E" & I + 9 & ",E" & I + 10 & ",E" & I + 11 & ",E" & I + 18 & ",E" & I + 20)
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(5).Name = "Budget"
ActiveChart.FullSeriesCollection(5).Values = ActiveSheet.Range("F" & I + 8 & ",F" & I + 9 & ",F" & I + 10 & ",F" & I + 11 & ",F" & I + 18 & ",F" & I + 20)
ActiveChart.FullSeriesCollection(1).XValues = ActiveSheet.Range("A10,A11,A12,A13,A20,A22") 'On met les légendes
ActiveChart.ChartTitle.Text = "Avancement matériel en montant " 'On nomme le graphe
ActiveChart.ChartStyle = 202
ActiveChart.SetElement (msoElementPrimaryValueAxisShow) 'On montre les axes
ActiveChart.SetElement (msoElementChartTitleAboveChart) 'On affiche le titre
ActiveChart.SetElement (msoElementDataTableWithLegendKeys) 'On met la table des valeurs avec la légende en-dessous du graphe
xx = Right(ActiveChart.Name, Len(ActiveChart.Name) - 7) ' on définit une variable qui qui récupère le nom du graphique
ActiveSheet.Shapes(xx).ScaleWidth 1.5, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes(xx).ScaleHeight 1.8, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.ChartObjects(xx).Cut 'on sélectionne le graphe
'on le coupe
ActiveSheet.Paste Destination:=ActiveSheet.Range("K" & I + 1) 'on le met à l'endroit voulu
Else
End If
Range("O" & I + 1).Select
Next I
Else
End If
Sheets("BD").Select
Range("B" & J + 1).Select
Next J
'
End Sub |
Partager