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 :

Insérer un chart dans word via vb.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut Insérer un chart dans word via vb.net
    Bonjour, dans le cadre de mon travail, je dois insérer un graphique dans un fichier Word via mon application VB.net.
    Pour le moment, j'arrive à créer le graphique, l'implémenter, ajouter les titres et la légende, mais je n'arrive pas à modifier la couleur des lignes de mon graphique.

    Code 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    'Ouvre le document word
    Dim oWord As New Word.Application
    oWord.Documents.Open(My.Application.Info.DirectoryPath & "\Rapports\Rapport Test.docx")
    oWord.Visible = True
     
            Dim oDoc As Word.Document
            oDoc = oWord.ActiveDocument
            oDoc.Bookmarks.Item("GraphAnalyseTendance").Range.Select()
     
            Dim oChart As Word.Chart
            oChart = oDoc.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xlLine).Chart
     
            Dim chartdata As Word.ChartData = oChart.ChartData
            Dim dataWorkbook As Excel.Workbook = CType(chartdata.Workbook, Workbook)
            Dim datasheet As Excel.Worksheet = CType(dataWorkbook.Worksheets(1), Worksheet)
            Dim tRange As Excel.Range = datasheet.Cells.Range("A1", "G" & Nb_Mesures_Optifive)
            Dim tbl1 As Excel.ListObject = datasheet.ListObjects("Tableau1")
     
            tbl1.Resize(tRange)
     
            datasheet.Cells.Range("B1").FormulaR1C1 = "Axe XCF"
            datasheet.Cells.Range("C1").FormulaR1C1 = "Axe YCF"
            datasheet.Cells.Range("D1").FormulaR1C1 = "Axe ZCF"
            datasheet.Cells.Range("E1").FormulaR1C1 = "Axe XAC"
            datasheet.Cells.Range("F1").FormulaR1C1 = "Axe YAC"
            datasheet.Cells.Range("G1").FormulaR1C1 = "Axe ZAC"
     
            For i = 4 To Nb_Mesures_Optifive + 3
                datasheet.Cells.Range("A" & i - 2).FormulaR1C1 = i - 3
                datasheet.Cells.Range("B" & i - 2).FormulaR1C1 = Math.Round(Val(Data_Optifive_Seconde(i, 0)), 3, MidpointRounding.AwayFromZero) 'XCF
                datasheet.Cells.Range("C" & i - 2).FormulaR1C1 = Math.Round(Val(Data_Optifive_Seconde(i, 1)), 3, MidpointRounding.AwayFromZero) 'YCF
                datasheet.Cells.Range("D" & i - 2).FormulaR1C1 = Math.Round(Val(Data_Optifive_Seconde(i, 2)), 3, MidpointRounding.AwayFromZero) 'ZCF
                datasheet.Cells.Range("E" & i - 2).FormulaR1C1 = Math.Round(Val(Data_Optifive_Premiere(i, 0)), 3, MidpointRounding.AwayFromZero) 'XAC
                datasheet.Cells.Range("F" & i - 2).FormulaR1C1 = Math.Round(Val(Data_Optifive_Premiere(i, 1)), 3, MidpointRounding.AwayFromZero) 'YAC
                datasheet.Cells.Range("G" & i - 2).FormulaR1C1 = Math.Round(Val(Data_Optifive_Premiere(i, 2)), 3, MidpointRounding.AwayFromZero) 'ZAC
            Next
     
            oChart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
            oChart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementPrimaryValueAxisTitleRotated)
     
            Dim AxisY As Word.Axis = CType(oChart.Axes(Word.XlAxisType.xlValue, Word.XlAxisGroup.xlPrimary), Word.Axis)
            AxisY.HasTitle = True
            AxisY.AxisTitle.Text = "Erreurs en µm"
     
            Dim AxisX As Word.Axis = CType(oChart.Axes(Word.XlAxisType.xlCategory, Word.XlAxisGroup.xlPrimary), Word.Axis)
            AxisX.HasTitle = True
            AxisX.AxisTitle.Text = "Numéro de mesure"
     
            oChart.HasTitle = True
            oChart.ChartTitle.Font.Size = 18
            oChart.ChartTitle.Font.Color = Color.Black.ToArgb()
            oChart.ChartTitle.Text = "Analyse de tendance"
            oChart.ChartTitle.Format.Line.Visible = Microsoft.Office.Core.MsoTriState.msoTrue
            oChart.ChartTitle.Format.Line.ForeColor.RGB = Color.Black.ToArgb()
     
            Dim obj = oChart.SeriesCollection(1)
            Dim ser As Word.Series = TryCast(obj, Word.Series)
     
            'ser.MarkerStyle = Word.XlMarkerStyle.xlMarkerStyleSquare
            'ser.MarkerSize = 4
     
            'Mise à jour table des matières
            oWord.ActiveDocument.TablesOfContents(1).Update()
     
            'Enregistre le doucment et ferme word
            oWord.ActiveDocument.SaveAs(PathTemporaire & "\Mesures\Fichiers PDF\Rapport " & NomUtilisateur & ".docx")
            oWord.ActiveDocument.Close()
            oWord.Quit()


    Donc tout ce code fonctionne, j'arrive également à mettre des balises et changer leur couleurs (code ci-dessous), mais pas à changer la couleur des 6 lignes du graphique.

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim obj = oChart.SeriesCollection(1)
    Dim ser As Word.Series = TryCast(obj, Word.Series)
     
    ser.MarkerStyle = Word.XlMarkerStyle.xlMarkerStyleSquare
    ser.MarkerSize = 4

    Merci de votre aide.

  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
    bonsoir,

    Si c'est des lignes, vous pouvez essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chart.SeriesCollection(n).Format.Line.Forecolor.RGB = RGB(X, Y, Z)
    n : numéro de la série

    Sincèrement

  3. #3
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut
    Bonjour Elthorn, et merci de ton aide.
    J'avais déjà essayé ta solution, mais après "SerieCollection(n)" je n'ai que les solutions de "Equals", "GetHashCode", "GetType" et "ToString" (voir photo ci-dessous)


    Nom : ChangeCouleur.jpg
Affichages : 412
Taille : 45,8 Ko

  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
    Bonjour,

    As tu ajouté Imports Microsoft.Office.Interop et bien mis en référence les "Microsoft Word object Library" et "Microsoft Excel object Library" (soit en COM soit en .net)?

    pour moi non plus, il ne me le propose pas mais avec les références et les imports, VS accepte la fonction.

    Sincèrement

  5. #5
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut
    Après vérification, Imports Microsoft.Office.Interop est bien déclaré dans mon application, par contre pas les références "Microsoft Word object Library" et "Microsoft Excel object Library" (en COM).
    Nouveau problème, une fois que je valide "Microsoft Word object Library", je me retrouve avec des erreurs dès la déclaration de mon fichier Word: (voir photo ci dessous)
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim oWord As New Word.Application


    Nom : Word.jpg
Affichages : 444
Taille : 21,0 Ko


  6. #6
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut
    En validant les références "Microsoft Word object Library" et "Microsoft Excel object Library" dans COM et en retirant les "Imports Microsoft.Office.Interop.Excel" et "Imports Microsoft.Office.Interop.Word" que j'avais mis dans mon projet, je peux maintenant déclarer mon fichier Word Dim oWord as New Word.Application , mais j'ai une nouvelle erreur lors de la création de mon graphique:

    Nom : Graph.jpg
Affichages : 417
Taille : 34,1 Ko

    Alors que c'est Visual Studio qui me propose de mettre ce code...
    J'ai également essayer de revenir en arrière (en remettant mes références), mais j'ai toujours l'erreur.

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

Discussions similaires

  1. Insérer un chart dans word via vb.net
    Par petit rabot dans le forum Visual Studio
    Réponses: 0
    Dernier message: 12/12/2019, 15h16
  2. Insérer un Tableau excel dans Word via VBA depuis Excel
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/05/2008, 08h52
  3. impression dans word via access
    Par fa310428 dans le forum Access
    Réponses: 4
    Dernier message: 16/02/2007, 23h02
  4. insertion de texte dans word via vb
    Par godik dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/05/2006, 13h07
  5. [VBA-E]Insérer des autotext dans Word à partir d'excel
    Par noordman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/04/2006, 15h34

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