Comment creer un graphique dans excel depuis VB

laurent3d - 24 avril 2000 à 17:28
xenarius Messages postés 8 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 24 mars 2011 - 24 mars 2011 à 14:50
Bonjour,
Comment creer un graphique dans une feuille excel depuis mon appli VB
J'arrive à remplir des cellules grace à une source de ce site, mais j'aurais besoin de plus d'info sur le sujet
1000 Mercis

10 réponses

Ouvre un nouveau projet, ajoute un commandbutton cmdGo et insère le code suivant.

Dim XlSheet As Object
Private Sub cmdGo_Click()
CreationClasseur ' crée un classeur excell et y met des données pour construire le graphe
ConstruireGraph 'construit le graphe
Set XlSheet = Nothing
End Sub

Sub CreationClasseur()

Set XlSheet = CreateObject("Excel.Application") ' crée une application Excell
XlSheet.Application.DisplayAlerts = False 'annule les messages
XlSheet.Application.Visible = True 'rend la fenêtre Excell visible
XlSheet.Workbooks.Add 'ajoute un classeur
'remplit la prèmière feuille de données utilisées pour construire le graphe

'cellule de début = A1 trés important pour dire ou commence les données à mettre dans le graphe
XlSheet.Worksheets(1).cells(1, 1).Value = "Janvier"
XlSheet.Worksheets(1).cells(1, 2).Value = "100"
XlSheet.Worksheets(1).cells(2, 1).Value = "Février"
XlSheet.Worksheets(1).cells(2, 2).Value = "250"
XlSheet.Worksheets(1).cells(3, 1).Value = "Mars"
XlSheet.Worksheets(1).cells(3, 2).Value = "180"
XlSheet.Worksheets(1).cells(4, 1).Value = "Avril"
XlSheet.Worksheets(1).cells(4, 2).Value = "300"
XlSheet.Worksheets(1).cells(5, 1).Value = "Mai"
XlSheet.Worksheets(1).cells(5, 2).Value = "380"
XlSheet.Worksheets(1).cells(6, 1).Value = "Avril"
XlSheet.Worksheets(1).cells(6, 2).Value = "300"
'cellule de fin = B6 trés important pour dire ou se termine les données à mettre dans le graphe
End Sub

Sub ConstruireGraph()

'ne pas oublier d'ajouter la référence Microsoft Excel 8.0 Object Library au projet, sinon impossible de créer l'application Excell
Dim ch As ChartObject
'ch va recevoir le graphique

Set ch = Worksheets(1).ChartObjects.Add(5, 5, 345, 198) ' le graphique sera tracé dans la prémière feuille du classeur

'trace le graphe een prenant les données de la cellule A1 à la cellule B6
ch.Chart.SetSourceData Source:=Worksheets(1).Range("A1:B6"), _
PlotBy:=xlColumns
ch.Chart.ChartWizard Gallery:=xlLine, PlotBy:=xlColumns, HasLegend:=True, CategoryTitle:="Mois", ValueTitle:="Ventes", Title:="Graphe1"

With ch.Chart.Axes(xlValue, xlPrimary)
.HasMajorGridlines = False
End With

End Sub
désolée je n'ai pas la reponse mais si tu l'as trouvé ou si on te la fournit bientot, je suis preneuse
merci beaucoup, je suis en galere...
cat
-------------------------------
Réponse au message :
-------------------------------

Bonjour,
Comment creer un graphique dans une feuille excel depuis mon appli VB
J'arrive à remplir des cellules grace à une source de ce site, mais j'aurais besoin de plus d'info sur le sujet
1000 Mercis
sifaca Messages postés 4 Date d'inscription samedi 27 avril 2002 Statut Membre Dernière intervention 10 juillet 2002
27 avril 2002 à 14:15
slt djiby je trouve ta source tres tres interressante, c'est d'ailleurs une des seules qui marchent dans tout le site de vb ;-)
Je voudrais qd meme te poser une question. Le soft m'ouvre bien excel et affiche bien dans les cellules les données mais a la construction du graphe, il me met une erreur.
C'est surement de ma faute car l'erreur dit:" type defini par l'utilisateur non defini".
Mais comme je suis assez debutant je voudrais que tu me dises ce qu'il faut faire exactemment.
Un grand merci dans l'attente d'une reponse positive.

--sifaca--

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_whiskygt Messages postés 37 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 10 septembre 2004
22 déc. 2003 à 16:04
cette source ne marche po sous vb.net :-( sniff merci quand meme
frdevecchi Messages postés 2 Date d'inscription vendredi 20 juin 2003 Statut Membre Dernière intervention 15 janvier 2004
15 janv. 2004 à 23:42
Salut, la source fonctionne bien mais je voudrais que le graphe s'affiche dans un ole de vb, comment faire? ou alors comment enregistrer le chart pour pouvoir l'afficher dans une picture box...
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
22 avril 2004 à 09:23
Super source, bien commenté, celle va beaucoup m'aider.

++
aicfr
cs_Cryborg Messages postés 30 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 8 février 2007
29 avril 2004 à 08:10
Bonjour !

La source marche nickel, mais j'aurais une question : je souhaiterais pourvoir utiliser des données qui ne sont pas dans des cellules ou colonnes adjacentes, par exemple A5:A10 pour les étiquettes de données, et C5:C10 pour les données elles-même. Comment faire ?

Merci !
cs_SoftMaker Messages postés 3 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 16 septembre 2008
16 sept. 2008 à 19:58
Très pratique ton source, au début ça ne marchait pas sous VB.NET 2008 mais après de nombreuses recherches sur le net j'ai effectuer les modifications nécessaires.

Je vais exposer ce que j'ai fait, si ça peut en aider certain...

D'abord il faut ajouter les "Imports" au début :
Imports Excel
Imports System.Runtime.InteropServices

Pour qu'ils soient reconnus, il faut faire "Ajouter une référence" dans le menu Projet
Dans l'onglet COM on choisi "Microsoft Excel 9.0 Object Library" (9.0 si on a Excel 2000)

Le code est presque le même, sauf ConstruireGraph()
Là j'ai du ajouter quelques "XlSheet." et déclarer les constantes suivantes faute de mieux, si quelqu'un vois une solution plus élégante...
Pour d'autres constantes Excel voir cette URL : http://www.dominoarea.org/forum/viewtopic.php?t=12896

    Const xlColumns = 2
    Const xlLine = 4
    Const xlPrimary = 1
    Const xlValue = 2

Voila le sub modifié :

    Sub ConstruireGraph()

        'ne pas oublier d'ajouter la référence Microsoft Excel 8.0 Object Library au projet, sinon impossible de créer l'application Excell
        Dim ch As ChartObject
        'ch va recevoir le graphique

        ch = XlSheet.Worksheets(1).ChartObjects.Add(5, 5, 345, 198) ' le graphique sera tracé dans la prémière feuille du classeur
        'trace le graphe een prenant les données de la cellule A1 à la cellule B6
        ch.Chart.SetSourceData(Source:=XlSheet.Worksheets(1).Range("A1:B6"), PlotBy:=xlColumns)
        ch.Chart.ChartWizard(Gallery:=xlLine, PlotBy:=xlColumns, HasLegend:=True, CategoryTitle:="Mois", ValueTitle:="Ventes", Title:="Graphe1")

        With ch.Chart.Axes(xlValue, xlPrimary)
            .HasMajorGridlines = False
        End With

    End Sub

Et Voila et merci encore pour ce source qui va me permettre de tracer des bandes passantes avec des données requeillies sur voltmètre PM2525 Philips via bus GPIB.
xenarius Messages postés 8 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 24 mars 2011
24 mars 2011 à 14:50
il suffit de mettre:
ch.Chart.SetSourceData(Source:=XlSheet.Worksheets(1).Range("A5:A10","C5:C10"), PlotBy:=xlColumns)
Rejoignez-nous