Bonjour à tous,
Voilà mon souci, je dois réaliser une suite de tableaux de bord et il y en a un qui me casse la tête.....
Pour pallier mes explications confuses, je vous joins l'excel en question.
A partir d'une liste dynamique, le graphique doit se mettre à jour seulement cela marche pour une partie des données et foire complètement pour certains.
Voici mon code, merci de me dire où je me trompe :
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 Private Sub CommandButton1_Click() On Error GoTo GraphErr: Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlChart As Excel.ChartObject Dim ns As Series Set xlBook = ActiveWorkbook Set xlSheet = xlBook.ActiveSheet Dim Graph As Variant For Each Graph In xlSheet.ChartObjects Debug.Print Graph.Name Next Graph Set xlChart = xlSheet.ChartObjects("Chart 2") Dim Formule As String Dim intLikelihood As Variant Dim intFrequency As Variant Dim NomSerie As String 'On vide les séries du graphique For Each ns In xlChart.Chart.SeriesCollection If ns.Name <> "Blank" Then ns.Delete End If Next ns Range("A2:G" & ActiveSheet.Range("C2").End(xlDown).Row).Font.Bold = False With xlChart.Chart .HasTitle = True .ChartTitle.Text = "Recommendation" .ChartType = xlBubble3DEffect End With For I = 2 To ActiveSheet.Range("C2").End(xlDown).Row 'on désigne les données pour le graphe Range("A" & I & ":G" & I).Font.Bold = False If ActiveSheet.Range("G" & I) = "X" Then intFrequency = IIf((ActiveSheet.Range("D" & I)) = 0, -1, ActiveSheet.Range("D" & I)) intLikelihood = IIf((ActiveSheet.Range("E" & I)) = 0, -1, ActiveSheet.Range("E" & I)) Formule = "=DashBoard_E!R" & I & "C6" NomSerie = ActiveSheet.Range("B" & I) 'Ajoute une série dans le graphique Debug.Print ActiveSheet.Range("B" & I); ActiveSheet.Range("D" & I); ActiveSheet.Range("E" & I); Formule With xlChart.Chart .SeriesCollection.NewSeries .SeriesCollection(I).Name = NomSerie .SeriesCollection(I).XValues = intFrequency .SeriesCollection(I).Values = intLikelihood .SeriesCollection(I).BubbleSizes = Formule .SeriesCollection(I).DataLabels.AutoScaleFont = True With .SeriesCollection(I).DataLabels.Font .Name = "Trebuchet MS" .FontStyle = "Gras" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With End With End If Range("A" & I & ":G" & I).Font.Bold = True Next I MsgBox "Fin'" Exit Sub GraphErr: MsgBox Err.Number & Chr(10) & Err.Description & Chr(10) & ActiveSheet.Range("B" & I) & ActiveSheet.Range("D" & I) & ActiveSheet.Range("E" & I) & Formule End Sub
merci de vos regards sur le sujet car le mien est vraiment embrouillé,
A+ RGShoop
Partager