Bonjour à tous,
me revoilà avec un nouveau problème.
J'essaie de faire des graphiques Excel depuis mon appli VB 2005. Pour un camembert ou un histogramme, ça ne pose pas de problème. Par contre, le graphique à bulles demande des modifs que je n'arrive pas à faire.
Voilà le code que j'utilise au départ :
Ca, ça marche bien pour les autres diagrammes, mais pour celui-là, ça me fait une représentation un peu fantaisiste, c'est-à-dire que ça ne fait pas : première colonne = abscisse, deuxième colonne = ordonnée et troisième colonne = taille des bulles.
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 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlChart As Excel.Chart xlApp = CType(CreateObject("Excel.Application"), Excel.Application) xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook) xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet) ' ici on compte le nombre de lignes du datatable Dim nbrLigne As Integer = Me.DataGrid_Risques.Rows.Count - 1 'titres des colonnes xlSheet.Cells(1, 1) = "Impact" xlSheet.Cells(1, 2) = "Probabilité" xlSheet.Cells(1, 3) = "Gravité" 'remplissage des colonnes avec les valeurs Dim x As Integer For x = 0 To nbrLigne - 1 xlSheet.Cells(x + 2, 1) = DataGrid_Risques.Item("Impact_Gén", x).Value xlSheet.Cells(x + 2, 2) = DataGrid_Risques.Item("ProbaColumn", x).Value xlSheet.Cells(x + 2, 3) = DataGrid_Risques.Item("GravitéColumn", x).Value Next xlChart = CType(xlBook.Charts.Add, Excel.Chart) 'On définit le type de graphique xlChart.ChartType = Excel.XlChartType.xlBubble3DEffect Dim cellmax As Object cellmax = xlSheet.Cells(nbrLigne + 1, 3) 'on désigne les données pour le graphe xlChart.SetSourceData(xlSheet.Range("A2", cellmax), Excel.XlRowCol.xlColumns)
Dans Excel, je sais faire les changements manuellement pour arriver à ça, mais depuis vb, ça n'accepte pas le code que j'ai trouvé pour faire ça, à savoir remplacer le .setSourceData par la description de la "série" voulue sur le graphique.
Ca donne ça :
J'ai eu différentes erreurs, pour l'instant c'est "Le type ne correspond pas" au niveau de l'affectation des XValues pour la série. Il me semblait pourtant qu'il fallait un Range....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 'Ajoute une série dans le graphique xlChart.SeriesCollection.NewSeries.Name = "=""Gravité""" cellmax = xlSheet.Cells(nbrLigne + 1, 2) xlChart.SeriesCollection(1).XValues = xlSheet.Range("B2", cellmax) cellmax = xlSheet.Cells(nbrLigne + 1, 3) xlChart.SeriesCollection(1).Values = xlSheet.Range("C2", cellmax) cellmax = xlSheet.Cells(nbrLigne + 1, 4) xlChart.SeriesCollection(1).BubbleSizes = "=" & xlSheet.Range("C3", cellmax).Address()
Bref, si quelqu'un peut me dépanner, tant mieux
Questions subsidiaires : je voudrais pouvoir bidouiller aussi les axes (visibles ou non, et leurs graduations). De la même façon que le code précédent, ce que je trouve dans les aides VBA ne veut pas fonctionner quand je tente de l'adapter....
Merci d'avance....![]()
Partager