Bonjour à tous !
Dans le cadre de mon job, je suis des "contrats entre entités" sous forme de graphes et ce, de mois en mois. J'ai écrit une marco qui "s'allonge tous les mois" car elle "incrémente" les graphes. Je pense que je ne suis pas très claire... Et je m'en excuse...
Donc, je vous livre là ma macro.
Ma question, ou plutôt, ma demande est : comment simplifier tout ça, car nous avons là une macro sur 4 mois... Donc, qu'en sera-t-il quand je l'écrirais pour 12 mois ???!!!
En fait, voila mes limites en VBA... Je sais écrire quelque chose, mais j'ai du mal à le synthétiser !!!
Je remercie donc d'avance toute personne qui voudra bien m'aider et me faire évoluer en VBA.
Au plaisir de vous lire bientôt
Excellement vôtre
Sub MiseEnPlaceGraph()
'Désactiver la màj de l'écran (qui clignote quand il ouvre et ferme) pour gagner du temps
Application.ScreenUpdating = False
'Supprimer d'abord les éventuels graphes
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
If ActiveSheet.ChartObjects.Count >= 1 Then
ActiveSheet.ChartObjects.Delete
End If
'Copier coller les graphes de juillet
Dim a As Long
For a = 1 To 8
Workbooks("NCSI GolfeLyon 07J09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & a).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("h" & 4 + (a * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 460
.Top = 44 + (a * 92.2)
End With
Next a
Dim b As Long
For b = 9 To 16
Workbooks("NCSI GolfeLyon 07J09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & b).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("h" & 4 + (b * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 460
.Top = 168.4 + (b * 92.2)
End With
Next b
Dim c As Long
For c = 17 To 17
Workbooks("NCSI GolfeLyon 07J09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & c).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("h" & 4 + (c * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 460
.Top = 292.5 + (c * 92.2)
End With
Next c
'Copier coller les graphes de août
Dim d As Long
For d = 1 To 8
Workbooks("NCSI GolfeLyon 08A09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & d).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("i" & 4 + (d * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 535
.Top = 44 + (d * 92.2)
End With
Next d
Dim e As Long
For e = 9 To 16
Workbooks("NCSI GolfeLyon 08A09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & e).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("i" & 4 + (e * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 535
.Top = 168.4 + (e * 92.2)
End With
Next e
Dim f As Long
For f = 17 To 17
Workbooks("NCSI GolfeLyon 08A09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & f).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("i" & 4 + (f * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 535
.Top = 292.5 + (f * 92.2)
End With
Next f
'Copier coller les graphes de septembre
Dim g As Long
For g = 1 To 8
Workbooks("NCSI GolfeLyon 09S09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & g).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("j" & 4 + (g * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 609
.Top = 44 + (g * 92.2)
End With
Next g
Dim h As Long
For h = 9 To 16
Workbooks("NCSI GolfeLyon 09S09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & h).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("j" & 4 + (h * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 609
.Top = 168.4 + (h * 92.2)
End With
Next h
Dim i As Long
For i = 17 To 17
Workbooks("NCSI GolfeLyon 09S09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & i).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("j" & 4 + (i * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 609
.Top = 292.5 + (i * 92.2)
End With
Next i
'Copier coller les graphes de octobre
Dim j As Long
For j = 1 To 8
Workbooks("NCSI GolfeLyon 10O09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & j).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("k" & 4 + (j * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 683
.Top = 44 + (j * 92.2)
End With
Next j
Dim k As Long
For k = 9 To 16
Workbooks("NCSI GolfeLyon 10O09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & k).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("k" & 4 + (k * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 683
.Top = 168.4 + (k * 92.2)
End With
Next k
Dim l As Long
For l = 17 To 17
Workbooks("NCSI GolfeLyon 10O09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & l).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("k" & 4 + (l * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 683
.Top = 292.5 + (l * 92.2)
End With
Next l
'Mettre tous les graphes aux dimensions : 2.1x2.5
Dim ChtObj As ChartObject
For Each ChtObj In ActiveSheet.ChartObjects
With ChtObj
.Height = 58
.Width = 71
End With
Next
End Sub
Dans le cadre de mon job, je suis des "contrats entre entités" sous forme de graphes et ce, de mois en mois. J'ai écrit une marco qui "s'allonge tous les mois" car elle "incrémente" les graphes. Je pense que je ne suis pas très claire... Et je m'en excuse...
Donc, je vous livre là ma macro.
Ma question, ou plutôt, ma demande est : comment simplifier tout ça, car nous avons là une macro sur 4 mois... Donc, qu'en sera-t-il quand je l'écrirais pour 12 mois ???!!!
En fait, voila mes limites en VBA... Je sais écrire quelque chose, mais j'ai du mal à le synthétiser !!!
Je remercie donc d'avance toute personne qui voudra bien m'aider et me faire évoluer en VBA.
Au plaisir de vous lire bientôt
Excellement vôtre
Sub MiseEnPlaceGraph()
'Désactiver la màj de l'écran (qui clignote quand il ouvre et ferme) pour gagner du temps
Application.ScreenUpdating = False
'Supprimer d'abord les éventuels graphes
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
If ActiveSheet.ChartObjects.Count >= 1 Then
ActiveSheet.ChartObjects.Delete
End If
'Copier coller les graphes de juillet
Dim a As Long
For a = 1 To 8
Workbooks("NCSI GolfeLyon 07J09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & a).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("h" & 4 + (a * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 460
.Top = 44 + (a * 92.2)
End With
Next a
Dim b As Long
For b = 9 To 16
Workbooks("NCSI GolfeLyon 07J09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & b).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("h" & 4 + (b * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 460
.Top = 168.4 + (b * 92.2)
End With
Next b
Dim c As Long
For c = 17 To 17
Workbooks("NCSI GolfeLyon 07J09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & c).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("h" & 4 + (c * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 460
.Top = 292.5 + (c * 92.2)
End With
Next c
'Copier coller les graphes de août
Dim d As Long
For d = 1 To 8
Workbooks("NCSI GolfeLyon 08A09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & d).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("i" & 4 + (d * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 535
.Top = 44 + (d * 92.2)
End With
Next d
Dim e As Long
For e = 9 To 16
Workbooks("NCSI GolfeLyon 08A09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & e).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("i" & 4 + (e * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 535
.Top = 168.4 + (e * 92.2)
End With
Next e
Dim f As Long
For f = 17 To 17
Workbooks("NCSI GolfeLyon 08A09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & f).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("i" & 4 + (f * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 535
.Top = 292.5 + (f * 92.2)
End With
Next f
'Copier coller les graphes de septembre
Dim g As Long
For g = 1 To 8
Workbooks("NCSI GolfeLyon 09S09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & g).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("j" & 4 + (g * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 609
.Top = 44 + (g * 92.2)
End With
Next g
Dim h As Long
For h = 9 To 16
Workbooks("NCSI GolfeLyon 09S09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & h).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("j" & 4 + (h * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 609
.Top = 168.4 + (h * 92.2)
End With
Next h
Dim i As Long
For i = 17 To 17
Workbooks("NCSI GolfeLyon 09S09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & i).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("j" & 4 + (i * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 609
.Top = 292.5 + (i * 92.2)
End With
Next i
'Copier coller les graphes de octobre
Dim j As Long
For j = 1 To 8
Workbooks("NCSI GolfeLyon 10O09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & j).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("k" & 4 + (j * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 683
.Top = 44 + (j * 92.2)
End With
Next j
Dim k As Long
For k = 9 To 16
Workbooks("NCSI GolfeLyon 10O09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & k).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("k" & 4 + (k * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 683
.Top = 168.4 + (k * 92.2)
End With
Next k
Dim l As Long
For l = 17 To 17
Workbooks("NCSI GolfeLyon 10O09.xls").Sheets("M").Activate
ActiveSheet.ChartObjects("GRAF" & l).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Workbooks("NCSI GolfeLyon Synthèse 11N09.xls").Sheets("Mois").Activate
Range("k" & 4 + (l * 3)).Select
ActiveSheet.Paste
With ActiveChart.Parent
.Left = 683
.Top = 292.5 + (l * 92.2)
End With
Next l
'Mettre tous les graphes aux dimensions : 2.1x2.5
Dim ChtObj As ChartObject
For Each ChtObj In ActiveSheet.ChartObjects
With ChtObj
.Height = 58
.Width = 71
End With
Next
End Sub