IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Faire un graphique à bulles Excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut Faire un graphique à bulles Excel
    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....

  2. #2
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    affecte Values avant XValues

  3. #3
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    Merci de ton aide bidou ; pourquoi faut-il mettre les Values avant les XValues ?

    Enfin je l'ai fait de toute façon, mais j'ai le même problème sur la ligne Values maintenant, il me dit que le type est incompatible. Dommage j'y croyais

    J'avais un bug dans mon code déjà, mes XValues et Values avaient 2 colonnes côte-à-côte affectées au lieu d'une, suite à une erreur dans mes indices, mais même en corrigeant, ça ne résoud pas le problème

    Code actuel :

    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
     
     
            xlChart = CType(xlBook.Charts.Add, Excel.Chart)
     
            Dim cellmax As Object
     
            'Ajoute une série dans le graphique
            xlChart.SeriesCollection.NewSeries.Name = "=""Gravité"""
     
            cellmax = xlSheet.Cells(nbrLigne + 1, 2)
            xlChart.SeriesCollection(1).Values = xlSheet.Range("B2", cellmax)
     
            cellmax = xlSheet.Cells(nbrLigne + 1, 1)
            xlChart.SeriesCollection(1).XValues = xlSheet.Range("A2", cellmax)
     
            xlChart.ChartType = Excel.XlChartType.xlBubble3DEffect
     
            cellmax = xlSheet.Cells(nbrLigne + 1, 3)
            xlChart.SeriesCollection(1).BubbleSizes = "=" & xlSheet.Range("C3", cellmax).Address()

  4. #4
    Membre averti
    Profil pro
    Consultant MOA
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    J'ai changé le type de graphique, mais j'ai toujours le même genre de problème. Maintenant je dois faire un nuage de points, avec la première colonne de données me servant en valeurs X et la seconde colonne en valeurs Y.

    Si je lui fais juste un setsourcedata avec un range incluant mes 2 colonnes (= comme mon premier post), il me crée 2 séries, qui n'ont pas de valeurs en X. Chacune de mes colonnes sert de valeur Y à une des séries.

    Je pense donc que la seule solution est que j'arrive à décrire la série en disant ses Values et ses XValues (= comme mon 2e post)....mais j'ai toujours cette erreur de "Type incompatible".

    Help ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 33
    Par défaut Du nouveau ?
    Bonjour,
    Je rencontre le pb (des XValues) avec un graph nuage de points.
    Avez vous trouvé une solution ?
    Merci.

Discussions similaires

  1. Excel - Graphique bulles
    Par jeje644 dans le forum Excel
    Réponses: 3
    Dernier message: 02/05/2014, 11h33
  2. [XL-2003] Faire un Graphique Excel
    Par bob456 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 04/06/2013, 10h05
  3. Faire un graphique en Ole avec Excel
    Par kurul1 dans le forum C++Builder
    Réponses: 18
    Dernier message: 23/03/2007, 21h57
  4. VBA - Excel Faire un graphique histogrammes - courbes
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/11/2005, 16h49
  5. [RAVE][DELPHI7] Comment faire un graphique ?
    Par DFANDOR dans le forum Rave
    Réponses: 7
    Dernier message: 06/02/2003, 20h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo