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 :

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)
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.

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 :

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()
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....
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....