Coller un graphe dans word

hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007 - 4 sept. 2006 à 11:16
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006 - 5 sept. 2006 à 16:02
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

hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007
4 sept. 2006 à 12:14
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
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
4 sept. 2006 à 18:05
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+
0
hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007
4 sept. 2006 à 18:48
"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
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
5 sept. 2006 à 10:15
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007
5 sept. 2006 à 11:06
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
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
5 sept. 2006 à 11:29
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à
0
hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007
5 sept. 2006 à 15:11
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.
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
5 sept. 2006 à 15:16
Tu développes avec quel langage ?
VB.NET ? VB6 ?
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
5 sept. 2006 à 15:21
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.
0
hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007
5 sept. 2006 à 15:40
si c'est déjà fait mais.....
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
5 sept. 2006 à 15:59
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
                   
0
scabo Messages postés 25 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 5 septembre 2006
5 sept. 2006 à 16:02
Ajoute éventuellement ça :
waWord.Visible = True
waWord.Activate()
 après la ligne :
waWord= New Word.Application
0
Rejoignez-nous