none
Piloter/mettre à jour un graphique Excel dans Word RRS feed

  • Question

  • Bonjour,

    j'ai cherché partout et aucune info a ce sujet, je vous explique.

    Je dois gérer un graph dans un fichier WOrd (je n'ai pas le choix le logiciel qui appel le document ne sait ouvrir que des fichiers word) hors quand je lie un fichier excel celui-ci ne s'affiche pas. Je dois pour le faire fonctionner, ajouter un graph natif dans word.

    Tout ce passe très bien sauf que je dois afficher des courbes selon des données dynamiques. J'ai voulu utiliser une macro VBA sauf que tous les exemples de macros sont du pure code Excel et les sheets et range ne sont pas instanciés dans Word mais en modification du graph.

    Les données étant des champs fusionnés word je n'ai pas le choix, je dois arriver a piloter mon graph avec du VBA dans le normal.dot

    Quelqu'un peut-il m'aider S.V.P.?


    lundi 23 avril 2012 09:27

Réponses

  • Bien en fait si vous avez un document tel que je le vois c'est qu'il s'agit non pas d'un graphique créé dans Word mais d'un graphique créé dans Excel et collé en tant que "Graphique Microsoft excel objet" dans le document...

    Vous devez donc pour afficher le graphique masquer les codes champ ou faire Alt+F9.

    Et donc, comme il est incorporé, vous ne pourrez modifier les courbes en modifiant les valeurs depuis la feuille instanciée par le biais du clic droit sur le dit graphique et en aucun cas depuis le tableau qui surplombe le graphique dans votre document.

    Si vous voulez modifier le graphique en l'état avec de nouvelles données par rapport au contenu du tableau en VBA, il vous faudra déterminer la présence de la table, l'identifier et la lire puis via OLE automation en copier le contenu dans un nouveau classeur créé à partir de l'instance objet Excel pilotée par Word.
    Une fois cela fait, il vous faudra et toujours par code, créer le graphique, l'agencer comme il se doit, le copier et le coller en lieu et place du précédent.

    Il y a beaucoup de ligne de code à écrire sans compter qu'il vous faudra aussi gérer les exceptions qui surviennent souvent dans ce mode de développement.


    Argy

    mardi 24 avril 2012 12:25
    Modérateur
  • Nous en sommes arrivés à la même conclusion. Je vais reprogrammer à chaque instance du document word mon graphique.

    Merci beaucoup pour votre aide qui va me faire gagner un temps précieux.


    • Marqué comme réponse ttropnull mardi 24 avril 2012 12:56
    • Non marqué comme réponse ttropnull mardi 24 avril 2012 12:56
    • Modifié ttropnull mardi 24 avril 2012 12:56
    • Marqué comme réponse Ciprian Duduiala vendredi 27 avril 2012 10:24
    mardi 24 avril 2012 12:56

Toutes les réponses

  • Bonjour,

    Si vous savez faire ce que vous voulez dans Excel, la transposition dans Word reste simple.

    Votre demande n'est pas très claire...

    Où est la source de données du graph ? Enfin, comment sont-elles présentées ? Avez-vous un exemple de document et de graph à "piloter" ?


    Argy

    lundi 23 avril 2012 14:10
    Modérateur
  • bonjour,

    désolé si je ne suis pas très clair, il est vrai que c'est un peut compliqué a expliquer.

    Tous les exemples de code que j'ai pu trouver font référence à un tableau excel et donc au document en ligne. Moi mon document est un fichier Word avec un graphique en natif c'est a dire que je l'ai ajouter via le menu word. quand je suis dans les macros de word, mon document actif n'est pas la feuille excel mais bien ma page word.

    De plus je ne veux pas créer un nouveau graphique mais utilisé celui que j'ai paramétré hors tous les exemples utlise la commande ActiveDocument.Shapes.AddChart.Chart  et je ne vois pas de commande éditant le graphique.

    Bref j'ai l'impression que je vais devoir recréer le graphique à chaque ouverture du fichier.

    PS: je ne trouve pas l'option pour joindre un fichier a mon post...

     

    mardi 24 avril 2012 07:15
  • Humm, mouais...

    Bien, si vous voulez créer un graphique à la volée, il est recommandé d'avoir une source de données valide et disponible et le mieux étant bien entendu un classeur Excel et sa feuille de calcul pour pouvoir faire évoluer le graphique en liaison avec le docuemnt Word, celui-ci étant inséré.

    Maintenant, si vous préférez user de Word à 100%, il faut considérer que vous ne pourrez pas désolidariser le document de se source Excel même si elle est masquée.

    Voici un exemple :

    Sub ShowChartDataSource()
    Dim oDoc                                        As Word.Document
    Dim oShapeChart                                 As InlineShape
    
        Set oDoc = ActiveDocument
        For Each oShapeChart In ActiveDocument.InlineShapes
            With oShapeChart
                If .Type = wdInlineShapeChart Then
                    .Select
                    .Chart.ChartData.Activate
                    .Chart.ChartData.Workbook.Application.WindowState = 1
                End If
            End With
        Next
        Set oShapeChart = Nothing
        Set oDoc = Nothing
    End Sub
    Côté clareté de votre souhait, il y a du mieux mais ce n'est pas encore ça.

    Argy

    mardi 24 avril 2012 08:07
    Modérateur
  • Merci beaucoup pour votre code, je pense qu'il va m'aider mais il me manque encore des liens avec mon projet.

    Voici une copie écran de la page. (les valeurs dans le tableau seront des données provenant du logiciel faisant la fusion)

    je passerai en blan le tout pour qu'il soit transparent. Je veux modifier la courbe noire (gras) avec les données du tableau. Si je n'utilise pas un fichier excel (ce qui solutionnerait sans doute mon problème) c'est que lors de l'ouverture du fichier via l'interface du logiciel, je n'ai pas le graphique qui s'affiche mais le lien (voir ci-dessous). J'espère avoir été plus claire mais je dois avouer que j'ai parfois du mal a exprimer ce que je n'arrive pas a faire...

    mardi 24 avril 2012 11:09
  • Bien en fait si vous avez un document tel que je le vois c'est qu'il s'agit non pas d'un graphique créé dans Word mais d'un graphique créé dans Excel et collé en tant que "Graphique Microsoft excel objet" dans le document...

    Vous devez donc pour afficher le graphique masquer les codes champ ou faire Alt+F9.

    Et donc, comme il est incorporé, vous ne pourrez modifier les courbes en modifiant les valeurs depuis la feuille instanciée par le biais du clic droit sur le dit graphique et en aucun cas depuis le tableau qui surplombe le graphique dans votre document.

    Si vous voulez modifier le graphique en l'état avec de nouvelles données par rapport au contenu du tableau en VBA, il vous faudra déterminer la présence de la table, l'identifier et la lire puis via OLE automation en copier le contenu dans un nouveau classeur créé à partir de l'instance objet Excel pilotée par Word.
    Une fois cela fait, il vous faudra et toujours par code, créer le graphique, l'agencer comme il se doit, le copier et le coller en lieu et place du précédent.

    Il y a beaucoup de ligne de code à écrire sans compter qu'il vous faudra aussi gérer les exceptions qui surviennent souvent dans ce mode de développement.


    Argy

    mardi 24 avril 2012 12:25
    Modérateur
  • Nous en sommes arrivés à la même conclusion. Je vais reprogrammer à chaque instance du document word mon graphique.

    Merci beaucoup pour votre aide qui va me faire gagner un temps précieux.


    • Marqué comme réponse ttropnull mardi 24 avril 2012 12:56
    • Non marqué comme réponse ttropnull mardi 24 avril 2012 12:56
    • Modifié ttropnull mardi 24 avril 2012 12:56
    • Marqué comme réponse Ciprian Duduiala vendredi 27 avril 2012 10:24
    mardi 24 avril 2012 12:56
  • Bonjour,

    Je me trouve devant exactement le même problème, avec également les mêmes courbes que vous à créer dans un doc word et à piloter depuis ce doc word. Et exactement comme vous, je ne peux pas travailler depuis excel puisque le logiciel dans lequel je dois injecter ce document ne tolère que les .dot.

    Etes-vous parvenu à gérer votre graphique à partir d'un tableau de votre document ? Comment avez-vous fait pour conserver l'historique des valeurs de la courbe noire que vous souhaitiez modifier ? Personnellement, à chaque fois que j'essaye de modifier les valeur de la table de donnée (chartdata), j'ai une erreur comme quoi cette propriété n'est qu'en lecture seule... Je ne peux donc pas rajouter de valeurs ... Avez-vous une piste à me fournir ?

    En vous remerciant d'avance ,

    Sayadyn

    lundi 5 novembre 2012 08:46