Coller un graphe dans word

Signaler
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007
-
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006
-
Bonjour,


je cherche à coller un graphe dans word, après avoir l'exporter slon le code suivant :


myRempliGraphe.Chart.Export(SoftwareFX.ChartFX.FileFormat.Bitmap)


 'je cherche le text "Eau"

       ' rng = waWord.Sections.Item(1).Range.Find

        With waWord.Sections.Item(1).Range.Find

            .ClearFormatting()

            .Text = "Eau"

             'Je colle le graphe

            .Application.Selection.Paste()

        End With

Mais ça bug et j'ai ce message d'erreur :

  Une exeption non gérée du type "System.NulReferenceException"

     la reference d'objet n'est pas définie à une instance d'un objet   

  Que dois-je fér SVP

Merci

12 réponses

Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007

Personne ne peut m'aider

déjà est ce clair mon msg

enffet à ( .Application.Selection.Paste()  )

j'ai le message d'erreur, je voi pas pourquoi  à l'aide SVP

Merci
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

Salut,

Tu exportes ton graphe en bitmap et ensuite tu essais de coller cette
image directement dansWord sur ta sélection que tu as obtenues quand tu
as cherché le mot "eau", c'est bien ça ?

Je travaille un peu avec Word mais je n'ai jamais fais de graphique. Cependant j'ai peut être une piste pour ton erreur, en effet je ne vois pas ce que tu as à coller (via le cheminement de ton code car j'ai bien compris que tu voulais coller l'image ^^) ?

Le code Application.selection.paste colle sur ta sélection courante le texte précédemment copié via Application.selection.copy mais tu n'as rien copier à proprement parler, tu as exporter une image au format bitmap mais c'est avec/sur elle qu'il faut agir.

Quel est le type de l'objet myRempliGraphe ?
Est ce que "myRempliGraphe.Chart.Export(SoftwareFX.ChartFX.FileFormat.Bitmap)" renvoi un objet image ?

J'attends ta réponse.

A+
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007

"myRempliGraphe.Chart.Export(SoftwareFX.ChartFX.FileFormat.Bitmap)"

me permet de mettre en presse papier une image bitmap puis la coller,
cette fonction marche ailleur, mais là non et  l'idée c'est de
coller une image à la place du texte. Car j'ai un doc word je l'ouvre
puis je place mes graphe et mes tableux à l'endroit et le page que je
veux, pour les graphe j'ouvre un fichier excel contenant mes tableaux
puis je remplie les cellules puis je fais copy coller vers word. je ne
sait pas si c la meilleur solution en ts cas je l'ai pas encore essaié
pour voir si ça merche

A+ merci
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

Tu as essayé d'utiliser la classe du presse papier ?
Cette source pourrait t'aider :
http://www.vbfrance.com/codes/GESTION-PRESSE-PAPIER_37492.aspx

Sinon regarde les propriétés et méthodes de la classe clipboard. Tu as plusieurs sources qui traitent du presse papier sur ce site.

A+
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007

Merci pour le lien c'est pas mal le soft, par contre mon problème je
pense c'est la séléction de l'endroit où je veux insérer l'image, donc
je cherche l'astuc qui me permet de coller mon image, pour cela je
cherche un texte "$graph1" puis je colle, j'utilise la fonction find,
puis je trouve le mot à partir de là je peux le remplacer par un autre
texte mais je ne peux pas colle l'image à la place du texte ni avant ni
après. Vois -tu une astuc STP Merci
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

La fonction find trouve le mot mais ne sélectionne pas forcément le texte (à vérifier) en faisant après ta fonction find ceci :
msgbox(.application.selection.text)

Sinon tu peux utiliser les signets, c'est facile. Tu ouvres donc document Word, tu sélectionnes ton texte "$graph1" et tu crés un signet manuellement via le menu "insertion/signet", tu l'appelles "SGraph1", c'est son nom de code unique pour le document. Tu enregistres et tu fermes ton doc Word.

Ensuite dans ton code, pour sélectionner un signet tu tapes :
dim MonNomSignet as string = "SGraph1"
Application.Selection.GoTo(What:=Word.WdGoToItem.wdGoToBookmark, Name:=(MonNomSignet))
Et là je peux te dire que cela sélectionne ton texte, tu peux taper ceci pour vérifier :
msgbox(.application.selection.text)
Ensuite tu colle l'image contenu dans ton clipboard via ton objet clipboard que tu as créé précédemment je pense.

Voilà
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007

Dzl de t'embéter mais apparament rien ne marche pour moi

je fais exactement la même chose que tu ma dis mais message d'erreur au niveau de la ligne rouge :


Une exeption non gérée du type "System.NulReferenceException"
     la reference d'objet n'est pas définie à une instance d'un objet   


voilà mon code :

        'Ouvrir le rapport existant dans le bureau

        Dim waWord As Word.Document

        waWord = GetObject("C:\Documents and Settings\Bureau\rapport.doc")


        Dim MonNomSignet As String = "graph1"

       waWord.Application.Selection.GoTo(What:=Word.WdGoToItem.wdGoToBookmark,
Name:=(MonNomSignet))

        'Et là je peux te dire que
cela sélectionne ton texte, tu peux taper ceci pour vérifier :

        MsgBox(waWord.Application.Selection.Text)

        'Ensuite tu colle l'image
contenu dans ton clipboard via ton objet clipboard que tu as créé
précédemment je pense.
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

Tu développes avec quel langage ?
VB.NET ? VB6 ?
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

Il faut aussi créer ton signet avant d'exécuter ton code.
Tu vas dans ton explorateur et tu ouvre ton fichier "rapport.doc" (ce que je t'explique c'est un manip à faire en dehors de ton code là)
Tu sélectionnes ton texte "$graph1" et tu crés un signet manuellement
via le menu "insertion/signet", tu l'a appellé "graph1", c'est son nom
de code unique pour le document. Tu enregistres et tu fermes ton doc
Word.

Ensuite seulement tu exécutes ton code.
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
6 décembre 2007

si c'est déjà fait mais.....
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

Et si tu fais ça :

Il faut ajouter la référence à Word si ce n'est déjà fait.

Dim MonNomSignet As String = "graph1"

dim waWordAs Word.Application

waWord= New Word.Application

waWord.WindowState = Word.WdWindowState.wdWindowStateNormal

waWord.Documents.Open("C:\Documents and Settings\Bureau\rapport.doc")
waWord.Width = 700
waWord.Selection.GoTo(What:=Word.WdGoToItem.wdGoToBookmark, Name:=(MonNomSignet))
MsgBox(waWord.Selection.Text)

waWord.Documents.Close()
waWord.Quit()
waWord = nothing
                   
Messages postés
25
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
5 septembre 2006

Ajoute éventuellement ça :
waWord.Visible = True
waWord.Activate()
 après la ligne :
waWord= New Word.Application