Bonjour à tous,


Je coince actuellement sur la mise en forme d'un graphique créé automatiquement par macro.
Voici la structure de mon traitement de données :
Classeur Source avec un premier traitement de données qui génère une multitude d'onglets où se trouvent les informations sous forme de tableau.
De ces différents tableaux, dans chacun des onglets, je souhaite créer un nouveau classeur par onglets avec une feuille qui contiendrait 3 Graphiques différents.

J'ai pas mal avancé, mais je coince sur la mise en forme du premier graphique. En effet, celui ci est bien généré sur le nouveau classeur, mais lorsque je souhaite mette en forme le titre, j'ai une erreur d'exécution '438' Propriété ou méthode non gérée par cet objet

C'est comme si la macro ne trouvait pas la sous-sélection...

Pour info, la macro se trouve sur mon fichier source

Voici un extrait du code (qui peut choquer les plus chevronnés car je suis débutant, et j'essaye d'adapter l'enregistreur)

Merci d'avance à ceux qui me liront, et j'espère avoir été explicite



Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 Sub CreationGraphe1()
 
    Dim MonGraphe As Chart
    Dim MonGraphe2 As Chart
    Dim MonGraphe3 As Chart
    Dim MaPlage1 As Range
    Dim MaPlage2 As Range
    Dim M As ChartObject
    Dim cel As Range
    Dim ws As Worksheet
    Dim wscount As Integer
    Dim I As Integer
    Dim derlign As Integer
 
    Dim SourceG As Range
 
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim Book As Excel.Workbook
 
 
    wscount = ActiveWorkbook.Worksheets.Count
 
    For I = 3 To wscount
 
     'On créer l'objet Excel
    Set xlApp = CreateObject("Excel.Application")
    'On défini le nombre d'onglets (ici 5)
    xlApp.SheetsInNewWorkbook = 1
    'On ajoute un classeur
    Set xlBook = xlApp.Workbooks.Add
    'On donne un nom au classeur
    xlBook.SaveAs (ActiveSheet.Name & ".xls")
    'On rend le classeur visible
    xlApp.Visible = True
 
    Range("Q2") = "CT JUSTIFIEE"
    Range("Q3") = "CT DECADREE"
 
 
    Set MaPlage1 = Sheets(I).Range(Cells(2, 17), Cells(3, 17))
 
    Set MaPlage2 = Sheets(I).Range(Cells(2, 18), Cells(3, 18))
    Set SourceG = xlBook.Sheets("Feuil1").Range("Q2:R3")
 
    ThisWorkbook.Sheets(I).Range("M1:R3").Copy
 
    xlBook.Sheets("Feuil1").Range("M1:R3").Value = ThisWorkbook.Sheets(I).Range("M1:R3").Value
 
 
    Set MonGraphe = xlBook.Charts.Add
 
    MonGraphe.ChartType = xl3DPieExploded
   MonGraphe.SetSourceData Source:=SourceG
 
 
    MonGraphe.SeriesCollection(1).Select
    MonGraphe.SeriesCollection(1).ApplyDataLabels
 
    MonGraphe.SeriesCollection(1).DataLabels.Select
    MonGraphe.SeriesCollection(1).DataLabels.ShowPercentage = True
    MonGraphe.SeriesCollection(1).DataLabels.Separator = "" & Chr(10) & ""
 
 
    MonGraphe.SeriesCollection(1).Select
 
    'Titre et légende
   MonGraphe.SetElement (msoElementChartTitleAboveChart)
    MonGraphe.ChartTitle.Text = _
        "TABLEAU DE BORD DES CONSULTATIONS TECHNIQUES POUR LE SECOND TRIMESTRE 2013" & Chr(13) & "" & Chr(13) & "TAUX DE CONSULTATIONS JUSTIFIEES"
    Selection.Format.TextFrame2.TextRange.Characters.Text = _
        "TABLEAU DE BORD DES CONSULTATIONS TECHNIQUES POUR LE SECOND TRIMESTRE 2013" & Chr(13) & "" & Chr(13) & "TAUX DE CONSULTATIONS JUSTIFIEES"
    With Selection.Format.TextFrame2.TextRange.Characters(1, 75).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
    End With
    With Selection.Format.TextFrame2.TextRange.Characters(1, 75).Font
        .BaselineOffset = 0
        .Bold = msoTrue
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 18
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
    End With