Meilleur auteur de réponses
Piloter/mettre à jour un graphique Excel dans Word

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.?
- Modifié ArgyronetModerator mardi 24 avril 2012 12:26 Titre plus circonstantiel
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
- Marqué comme réponse Ciprian Duduiala vendredi 27 avril 2012 10:24
-
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
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
-
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...
-
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
-
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...
-
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
- Marqué comme réponse Ciprian Duduiala vendredi 27 avril 2012 10:24
-
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
-
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