Bonjour à toutes et à tous,

Je mets actuellement en place un outil de gestion, cet outil récupère des données, les insère dans un nouveau document créé pour l'occasion, les traite puis propose à l'utilisateur de réaliser des graphiques d'évolutions. J'ai tout d'abord développé cet outil pour Office 2013 et il fonctionne comme je le désire. Le soucis vient du fait que les ordinateurs de mon entreprise tournent sous Office 2003 et que le code sous VBA n'est pas le même.

J'ai réussi à corriger les points de la récolte de données et du traitement, en revanche pour la mise en place des graphiques, cela ne fonctionne plus. Je me suis inspiré de l'enregistreur de macro mais cela à généré des erreurs plus ou moins importantes.

La méthode de création de graphique insère un nouvel onglet dans le fichier dans lequel j'ai mon code au lieu de le mettre dans le fichier "nouveau" où se trouvent les données.
Les données si elles se trouvent dans le fichier "nouveau" font planter Excel (Erreur '-2147417848(80010108)' Erreur Automation. L'objet invoqué s'est déconnecté de ses clients.), j'ai contourné le problème en copiant les données nécessaires à la création de mon graph sur le document Excel où se trouve mon code.
J'ai ensuite essayé de copier le graphique créé pour le coller dans mon document "nouveau" mais cela le créé dans un autre classeur.

J'en suis là et ne voit pas de solutions malgré mes recherches précédentes.
Je précise que je suis autodidacte sur VBA d'où les choses moches qui peuvent se glisser dans mon code.

Je joins mon code qui traite de la partie en lien avec le(s) graphique(s) et suis à disposition sans limite de temps ni d'heure pour apporter les informations qui pourraient être manquantes.

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
'récupération des données pour graph
Dim PosDonnees As String
z = 1
For i = 1 To CompteurUF2LB
    For j = 2 To DernLigne
        If ThisWorkbook.Sheets("Feuil5").Range("A" & i).Value = "" Then 'Test valeur vide
            Exit For
        ElseIf ThisWorkbook.Sheets("Feuil5").Range("A" & i) = xlBook.Sheets("Feuil1").Range("A" & j) Then 'Mise en place de la marge
            xlBook.Sheets("F4").Range("A" & z + 1) = ThisWorkbook.Sheets("Feuil5").Range("B" & i)
            xlBook.Sheets("F4").Range("B" & z + 1) = "CA"
            xlBook.Sheets("F4").Range("B" & z + 2) = "Marge %"
            xlBook.Sheets("F4").Range("B" & z + 3) = "Perte %"
            x = 11
            y = 3
            While y <= NbMois + 3 'Récupération des données en fonction des graphiques désirés par l'utilisateur
                Lettr = Split(Cells(1, x).Address, "$")(1)
                LettrBis = Split(Cells(1, x - 1).Address, "$")(1)
                LettrTer = Split(Cells(1, x - 2).Address, "$")(1)
                LettrF4 = Split(Cells(1, y).Address, "$")(1)
                xlBook.Sheets("F4").Range(LettrF4 & z + 1) = xlBook.Sheets("Feuil1").Range(Lettr & j)
                xlBook.Sheets("F4").Range(LettrF4 & z + 2) = xlBook.Sheets("Feuil1").Range(LettrBis & j)
                xlBook.Sheets("F4").Range(LettrF4 & z + 3) = xlBook.Sheets("Feuil1").Range(LettrTer & j)
                y = y + 1
                x = x + 9
            Wend
            LettrGph = Split(Cells(1, NbMois + 3).Address, "$")(1)
            PosDonnees = "B" & z + 1 & ":" & LettrGph & z + 3
            xlBook.Sheets("F4").Cells.Copy
            ThisWorkbook.Sheets("Feuil7").Paste 'Copie des données du document initial
            Set sourcRange = ThisWorkbook.Sheets("Feuil7").Range(PosDonnees)
            xlBook.Sheets("Graphs").Activate
            Charts.Add
            ActiveChart.ChartType = xlLine
            ActiveChart.SetSourceData Source:=sourcRange, PlotBy:= _
        xlRows
            'ActiveChart.SeriesCollection(1).XValues = "='F4'!R1C3:R1C6"
            'ActiveChart.SeriesCollection(2).XValues = "='F4'!R1C3:R1C6"
            'ActiveChart.SeriesCollection(3).XValues = "='F4'!R1C3:R1C6"
            'ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphs"
            With Charts(i)
                .HasTitle = True
                .ChartTitle.Characters.Text = xlBook.Sheets("F4").Range("A" & z + 1)
                .Axes(xlCategory, xlPrimary).HasTitle = False
                .Axes(xlValue, xlPrimary).HasTitle = False
            End With
            ActiveChart.SeriesCollection(3).Select
            ActiveChart.SeriesCollection(3).AxisGroup = 2
            ActiveChart.SeriesCollection(2).Select
            ActiveChart.SeriesCollection(2).AxisGroup = 2
            Sheets("Graph" & i).Copy
            xlBook.Sheets.Add
            ActiveSheet.Name = xlBook.Sheets("F4").Range("A" & z + 1)
            ActiveSheet.Paste
            z = z + 3
        End If
    Next
Next
Merci d'avance à ceux qui prendront le temps de se pencher sur mes problèmes.
Cordialement,
Nyectod