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 :

Graphique excel sur VB.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut Graphique excel sur VB.net
    Bonjour à tous,

    Je cherche à faire apparaître un graphique excel sur Visual basic

    Pour l'instant après quelques recherches j'ai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim XlApp As Object = Nothing, Workbook As Object = Nothing, ActiveSheet As Object = Nothing
            XlApp = GetObject("Excel.Application")
            'XlApp.visible = True'
            Workbook = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.exe")
            ActiveSheet = Workbook.ActiveSheet
            ActiveSheet.ChartObjects("Graphique 1").Activate()
            With ActiveChart
                .PlotArea.Select()
                .ShowWindow = True
            End With
        End Sub
    Le problème que j'ai est au niveau du ActiveChart il me demande de générer un stub et si jamais je le fais une erreur se met sur le stub quand je click sur le bouton

  2. #2
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Bonjour,

    avant tout autre choses, je note ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim XlApp As Object = Nothing, Workbook As Object = Nothing, ActiveSheet As Object = Nothing
            XlApp = GetObject("Excel.Application")
    tss,tss, même erreur que la dernière fois : utilise CreateObject...

    "ActiveChart" n'est déclaré nulle part...

    Ton graphique est il inclus dans une feuille ou est-ce une feuille ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    La dernière fois j'ai finalement gardé le Getobject car tout est déjà créé sur excel .

    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
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim XlApp As Object = Nothing, Workbook As Object = Nothing, Sheets As Object = Nothing
            XlApp = GetObject("Excel.Application")
            'XlApp.visible = True'
            Workbook = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.exe ")
            Sheets = Workbook.Sheets(2)
     
            Dim strSheetName As New List(Of String)
            For Each Sheets In XlApp.Sheets
                strSheetName.Add(Sheets.Name)
                ListBox1.Items.Add(Sheets.Name)
            Next
            Workbook.Close()
            XlApp.Quit()
        End Sub
     
        Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
            Dim nom As String
            Dim XlApp As Object = Nothing, Workbook As Object = Nothing, Sheets As Object = Nothing
            XlApp = GetObject("Excel.Application")
            'XlApp.visible = True'
            Workbook = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.exe ")
            Sheets = Workbook.Sheets(1)
            nom = ListBox1.SelectedItem.ToString
     
            Sheets.Cells(1, 5).Value = nom
            Sheets.application.Run("Bouton2_Cliquer")
            Me.Hide()
            Form2.Show()
     
            XlApp.DisplayAlerts = False
            Workbook.Save()
            Workbook.Close()
            XlApp.DisplayAlerts = True
            XlApp.Quit()
        End Sub
    Si, il est déclaré un peu plus loin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Function ActiveChart() As Object
            Throw New NotImplementedException
        End Function
    c'est justement à ce niveau la qu'il y a un problème

    Mon graphique est inclus dans une feuille.

  4. #4
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    salut,

    concernant "getobject", c'est bizarre car chez moi il me renvoie une erreur ("impossible de créer le composant activeX") même avec un fichier déjà créé ou une instance ouverte. Mais cela vient peut-être du fait que tu as déjà ouvert une instance excel quelque part dans ton projet .

    J'ai testé ça et cela fonctionne mais est ce que cela correspond à ce que tu veux faire ? (cela affiche la feuille et le graphe et cela sélectionne le graphe)

    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
    Dim XlApp As Object = CreateObject("excel.application")
          Dim Workbook As Microsoft.Office.Interop.Excel.Workbook
          Dim activesheet As Microsoft.Office.Interop.Excel.Worksheet
          Dim ActiveChart As Microsoft.Office.Interop.Excel.ChartObject
          Workbook = XlApp.Workbooks.Open("X:\programmation\VB.net\Projets\test\essais.xls")
          activesheet = Workbook.Sheets("Feuil1")
          activesheet.Activate()
     
          activesheet.ChartObjects("Graphique 1").activate()
          ActiveChart = activesheet.ChartObjects("Graphique 1")
     
          ActiveChart.Select()
          XlApp.visible = True
          msgbox("attente") 'obligatoire car les deux lignes d'après te ferment immédiatement le fichier ;) ou alors tu enlèves les deux lignes suivantes
     
     
          Workbook.Close()
          XlApp.quit()

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 576
    Par défaut
    Bonjour,
    en fait GetObject c'est du vba et ça s'utilise comme ça!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xls=GetObject(,"Excel.Application")
    Code Version vb.net : 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
    Imports System.Runtime.InteropServices
     Friend Function GetObject(ByVal App As String) As Object
    Try
                Try
                    Return Marshal.GetActiveObject(App)
                Catch ex As Exception
                    Return False
                End Try
            Catch exRD As Exception
                log.Error("", exRD)
                Return False
            Finally
            End Try
        End Function
     Friend Function CreateObject(ByVal app As String) As Object
            Try
                Dim AppType As Object = Type.GetTypeFromProgID(app)
                Try
                    Dim ApplInst As Object = Activator.CreateInstance(AppType)
                    Return ApplInst
                Catch ex As Exception
                    Return False
                End Try
            Catch exRD As Exception
                log.Error("", exRD)
                Return False
            Finally
            End Try
        End Function

  6. #6
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Salut,

    Après quelques vérif, il faut que le fichier ou EXCEL soit déjà ouvert pour que getobject ne donne pas d'erreur.

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    Non elthorn justement je ne veux pas que la page excel puisse s'afficher je veux que le graphique apparaisse par exemple dans une picturebox.

    Bizarre Thumb down car je suis en VB.net et cela marche très bien pour récupérer le nom de mes feuilles excel. (Je ne suis pas du tout habitué à ton style de code il n'y a aucune dim pour aller récupérer mon fichier je ne vois pas trop comment ton code fonctionne mais je suis débutant ce doit être pour sa)

    Merci beaucoup en tout cas je continue à travailler dessus et si je trouve une solution je vous la poste

  8. #8
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    j'ai un peu avancer ( je crois)

    j'ai ce code

    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
     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim XlApp As Object = Nothing, Workbook As Object = Nothing, ActiveSheet As Object = Nothing
            XlApp = GetObject("Excel.Application")
            'XlApp.visible = True'
            Workbook = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.exe")
            ActiveSheet = Workbook.ActiveSheet
            ActiveSheet.ChartObjects(2).Activate()
            ActiveSheet.ChartObjects(2).activate()
            ActiveChart = ActiveSheet.ChartObjects(2)
     
            PictureBox1 = ActiveChart
     
     
     
            XlApp.DisplayAlerts = False
            Workbook.Save()
            Workbook.Close()
            XlApp.DisplayAlerts = True
            XlApp.Quit()
        End Sub
    et cette erreur apparaît

    Nom : aide.PNG
Affichages : 172
Taille : 43,1 Ko

  9. #9
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    Je vais voir ça merci

  10. #10
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    salut,

    pour récupérer ta chart et la mettre dans ta picture box :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveChart.select()
    ActiveChart.copy()
    picturebox1.image=clipboard.getimage

  11. #11
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    c'est parfait Elthorn merci énormément

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser le solveur d'EXCEL sur VB.Net
    Par ousmane126 dans le forum VB.NET
    Réponses: 6
    Dernier message: 02/07/2014, 11h29
  2. Ajout de series sur graphique excel en VB.net
    Par simmart dans le forum VB.NET
    Réponses: 1
    Dernier message: 27/05/2011, 21h31
  3. ouvrir un fichier text en excel sur vb net
    Par sihammaster dans le forum VB.NET
    Réponses: 0
    Dernier message: 30/11/2009, 13h02
  4. Afficher graphique (Excel) sur une page ASP.NET
    Par supra3000 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/02/2009, 17h32
  5. Graphique access sur le net.
    Par pepe2006 dans le forum Access
    Réponses: 3
    Dernier message: 14/09/2005, 01h26

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