OVH Cloud OVH Cloud

liaison Word

2 réponses
Avatar
Emcy
Je repose ma question vu que personne ne m'a répondu

c'est bien WordObj qu'il faut utiliser.
Le problème était sur les variable wdSeekCurrentPageHeader et
wdSeekMainDocument qui ne sont pas reconnue à partir d'excel : il faut
mettre respectivement les chiffres 9 et 0.

Maintenant, le problème est que j'ai pleins de zone de text et de forme qui
sont regroupées en un seul objet : avec ta méthode actuelle, je ne
selectionne que l'objet principale (et non pas les zones de text). As-tu une
solution ?

voivi une macro que j'ai essayée et qui ne marche pas (je pense qu'il faut
faire un truc dans le genre):
Set WordObj = CreateObject("Word.Application")

WordObj.Visible = True
'WordObj.ScreenUpdating = False
Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre la
nomenclature Word

WordFile.ActiveWindow.ActivePane.View.SeekView = 9
For Each s In WordObj.Selection.HeaderFooter.Shapes(1).Shapes
On Error Resume Next
's.Select
s.TextFrame.TextRange = "aaa"
Next
'WordObj.Selection.HeaderFooter.Shapes(1).Select
WordObj.ActiveWindow.ActivePane.View.SeekView = 0



"Joel" <joel-garbe@wanadoo.fr> a écrit dans le message de
news:ccje58$n1e$1@news-reader5.wanadoo.fr...
> Re ;-)
>
> c'est peut-être pour toi WordFile et non WordObj...
>
> désolé ! si ce n'est pas le cas, renvoi l'intégralité du code, car je n'ai
> pas testé avec cette hisoire de nomenclature ...
> --
>
> Bien cordialement,
>
> Joël GARBE
> www.joelgarbe.fr
> "Emcy" <ten.etsop@ycme.ycme> a écrit dans le message de
> news:%23pSP%23SOZEHA.3112@TK2MSFTNGP09.phx.gbl...
> > J'ai une erreur sur la ligne : For Each s In
> > WordObj.Selection.HeaderFooter.Shapes
> >
> > "Joel" <joel-garbe@wanadoo.fr> a écrit dans le message de
> > news:ccja4t$at5$1@news-reader5.wanadoo.fr...
> > > Bonjour EMCY !
> > >
> > > Essaye donc un peu !!!
> > >
> > > For Each s In WordFile.Shapes
> > > On Error Resume Next
> > > s.TextFrame.TextRange = "aaa"
> > > Next
> > >
> > > WordObj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
> > > For Each s In WordObj.Selection.HeaderFooter.Shapes
> > > On Error Resume Next
> > > s.TextFrame.TextRange = "aaa"
> > > Next
> > > WordObj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
> > >
> > > A bientôt !!!
> > > --
> > >
> > > Bien cordialement,
> > >
> > > Joël GARBE
> > > www.joelgarbe.fr
> > > "Emcy" <ten.etsop@ycme.ycme> a écrit dans le message de
> > > news:eIUtXPMZEHA.2388@TK2MSFTNGP09.phx.gbl...
> > > > Bonjours,
> > > >
> > > > A l'aide d'une macro excel, j'ouvre un fichier word qui à pleins de
> > zones
> > > de
> > > > text en arrière plan (entête et pied de page) et en avant plan (là
ou
> on
> > > > ecris normalement)
> > > >
> > > > J'arrive à remplir les zones de text en avant plan mais pas en
arrière
> > > plan.
> > > > Quelqu'un a-t-il une solution ?
> > > >
> > > > voici ma macro pour remplir en avant plan :
> > > >
> > > > Sub Word()
> > > >
> > > > Dim WordObj As Object
> > > > Dim WordFile As Object
> > > >
> > > > Set WordObj = CreateObject("Word.Application")
> > > >
> > > > WordObj.Visible = True
> > > > Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre la
> > > > nomenclature Word
> > > >
> > > > For Each s In WordFile.Shapes
> > > > On Error Resume Next
> > > > s.TextFrame.TextRange = "aaa"
> > > > Next
> > > >
> > > > Set WordFile = Nothing
> > > > Set WordObj = Nothing
> > > >
> > > > End Sub
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>

2 réponses

Avatar
Joel
Bonsoir EMCY,

Evidemment, on ne connait pas tout par coeur, et l'arrêt du suivi signifie
que l'on "sèche" sur la question.

Comme nous ne sommes pas payés non plus pour poursuivre les recherches à la
place des questionneurs, il arrive quelquefois que la question reste en
suspens...

Tu as raison de relancer, j'ai fait l'effort de poursuivre l'étude...

En revanche, j'ai étudié directement sur Word, je pense que tu pourras
traduire à partir de ton appli...

Sub TexteEnZone()
Dim ZoneText As Shape
For Each ZoneText In ActiveDocument.Shapes
If ZoneText.GroupItems.Count = 1 Then 'c'est ici que l'on détermine si
l'objet est "Groupé" ou non
ZoneText.TextFrame.TextRange = "aaa"
Else
Dim SousZOneText As Shape
For Each SousZOneText In ZoneText.GroupItems 'C'est ici que l'on
passe en revue tous les objets du groupe (en espérant qu'il n'y ait pas de
sous-groupe...)
SousZOneText.TextFrame.TextRange = "aaa"
Next
End If
Next
End Sub

J'espère que cela te suffira, (adapter avec WordObj.etc...) dans le cas
contraire, je reprendrais à partir de ton code.
cela devrait donner quelquechose du genre :

for each z in s.GroupeItems pour toi


Tiens-nous au courant..

Bonne soirée ;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Emcy" a écrit dans le message de
news:
Je repose ma question vu que personne ne m'a répondu

c'est bien WordObj qu'il faut utiliser.
Le problème était sur les variable wdSeekCurrentPageHeader et
wdSeekMainDocument qui ne sont pas reconnue à partir d'excel : il faut
mettre respectivement les chiffres 9 et 0.

Maintenant, le problème est que j'ai pleins de zone de text et de forme
qui

sont regroupées en un seul objet : avec ta méthode actuelle, je ne
selectionne que l'objet principale (et non pas les zones de text). As-tu
une

solution ?

voivi une macro que j'ai essayée et qui ne marche pas (je pense qu'il faut
faire un truc dans le genre):
Set WordObj = CreateObject("Word.Application")

WordObj.Visible = True
'WordObj.ScreenUpdating = False
Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre la
nomenclature Word

WordFile.ActiveWindow.ActivePane.View.SeekView = 9
For Each s In WordObj.Selection.HeaderFooter.Shapes(1).Shapes
On Error Resume Next
's.Select
s.TextFrame.TextRange = "aaa"
Next
'WordObj.Selection.HeaderFooter.Shapes(1).Select
WordObj.ActiveWindow.ActivePane.View.SeekView = 0



"Joel" a écrit dans le message de
news:ccje58$n1e$
Re ;-)

c'est peut-être pour toi WordFile et non WordObj...

désolé ! si ce n'est pas le cas, renvoi l'intégralité du code, car je
n'ai


pas testé avec cette hisoire de nomenclature ...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Emcy" a écrit dans le message de
news:%23pSP%
J'ai une erreur sur la ligne : For Each s In
WordObj.Selection.HeaderFooter.Shapes

"Joel" a écrit dans le message de
news:ccja4t$at5$
Bonjour EMCY !

Essaye donc un peu !!!

For Each s In WordFile.Shapes
On Error Resume Next
s.TextFrame.TextRange = "aaa"
Next

WordObj.ActiveWindow.ActivePane.View.SeekView > wdSeekCurrentPageHeader
For Each s In WordObj.Selection.HeaderFooter.Shapes
On Error Resume Next
s.TextFrame.TextRange = "aaa"
Next
WordObj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

A bientôt !!!
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Emcy" a écrit dans le message de
news:
Bonjours,

A l'aide d'une macro excel, j'ouvre un fichier word qui à pleins
de





zones
de
text en arrière plan (entête et pied de page) et en avant plan (là
ou




on
ecris normalement)

J'arrive à remplir les zones de text en avant plan mais pas en
arrière




plan.
Quelqu'un a-t-il une solution ?

voici ma macro pour remplir en avant plan :

Sub Word()

Dim WordObj As Object
Dim WordFile As Object

Set WordObj = CreateObject("Word.Application")

WordObj.Visible = True
Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre la
nomenclature Word

For Each s In WordFile.Shapes
On Error Resume Next
s.TextFrame.TextRange = "aaa"
Next

Set WordFile = Nothing
Set WordObj = Nothing

End Sub
























Avatar
Emcy
Merci beaucoup pour tant d'effort, ça marche : voici ce que ça donne depuis
Excel

Set WordObj = CreateObject("Word.Application")

WordObj.Visible = True
'WordObj.ScreenUpdating = False
Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre la
nomenclature Word

WordFile.ActiveWindow.ActivePane.View.SeekView = 9

'If WordObj.Selection.HeaderFooter.Shapes(1).GroupItems.Count > 1 Then '
determine si l'objet est groupé

'dans mon cas shape(1) correspond à mon objet groupé
For Each SousZoneText In WordObj.Selection.HeaderFooter.Shapes(1).GroupItems
'C'est ici que l'on passe en revue tous les objets du groupe (en espérant
qu'il n'y ait pas de sous-groupe...)
SousZoneText.TextFrame.TextRange = "aaa"
Next

'WordObj.Selection.HeaderFooter.Shapes(1).Select
WordObj.ActiveWindow.ActivePane.View.SeekView = 0

PS : j'avais remarqué que tu avais sèché mais j'ai relancé mon problème pour
qu'il soit résolu par une personne qui n'avait pas encore vu le message

Quand j'aurais le temps, j'essairais de faire un exemple que je déposerais
sur ExcelDowload qui expliquera comment insérer un tableau excel dans un
documment word comportant un cartouche et comment remplir ce cartouche



"Joel" a écrit dans le message de
news:ccub08$l7u$
Bonsoir EMCY,

Evidemment, on ne connait pas tout par coeur, et l'arrêt du suivi signifie
que l'on "sèche" sur la question.

Comme nous ne sommes pas payés non plus pour poursuivre les recherches à
la

place des questionneurs, il arrive quelquefois que la question reste en
suspens...

Tu as raison de relancer, j'ai fait l'effort de poursuivre l'étude...

En revanche, j'ai étudié directement sur Word, je pense que tu pourras
traduire à partir de ton appli...

Sub TexteEnZone()
Dim ZoneText As Shape
For Each ZoneText In ActiveDocument.Shapes
If ZoneText.GroupItems.Count = 1 Then 'c'est ici que l'on détermine si
l'objet est "Groupé" ou non
ZoneText.TextFrame.TextRange = "aaa"
Else
Dim SousZOneText As Shape
For Each SousZOneText In ZoneText.GroupItems 'C'est ici que l'on
passe en revue tous les objets du groupe (en espérant qu'il n'y ait pas de
sous-groupe...)
SousZOneText.TextFrame.TextRange = "aaa"
Next
End If
Next
End Sub

J'espère que cela te suffira, (adapter avec WordObj.etc...) dans le cas
contraire, je reprendrais à partir de ton code.
cela devrait donner quelquechose du genre :

for each z in s.GroupeItems pour toi


Tiens-nous au courant..

Bonne soirée ;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Emcy" a écrit dans le message de
news:
Je repose ma question vu que personne ne m'a répondu

c'est bien WordObj qu'il faut utiliser.
Le problème était sur les variable wdSeekCurrentPageHeader et
wdSeekMainDocument qui ne sont pas reconnue à partir d'excel : il faut
mettre respectivement les chiffres 9 et 0.

Maintenant, le problème est que j'ai pleins de zone de text et de forme
qui

sont regroupées en un seul objet : avec ta méthode actuelle, je ne
selectionne que l'objet principale (et non pas les zones de text). As-tu
une

solution ?

voivi une macro que j'ai essayée et qui ne marche pas (je pense qu'il
faut


faire un truc dans le genre):
Set WordObj = CreateObject("Word.Application")

WordObj.Visible = True
'WordObj.ScreenUpdating = False
Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre la
nomenclature Word

WordFile.ActiveWindow.ActivePane.View.SeekView = 9
For Each s In WordObj.Selection.HeaderFooter.Shapes(1).Shapes
On Error Resume Next
's.Select
s.TextFrame.TextRange = "aaa"
Next
'WordObj.Selection.HeaderFooter.Shapes(1).Select
WordObj.ActiveWindow.ActivePane.View.SeekView = 0



"Joel" a écrit dans le message de
news:ccje58$n1e$
Re ;-)

c'est peut-être pour toi WordFile et non WordObj...

désolé ! si ce n'est pas le cas, renvoi l'intégralité du code, car je
n'ai


pas testé avec cette hisoire de nomenclature ...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Emcy" a écrit dans le message de
news:%23pSP%
J'ai une erreur sur la ligne : For Each s In
WordObj.Selection.HeaderFooter.Shapes

"Joel" a écrit dans le message de
news:ccja4t$at5$
Bonjour EMCY !

Essaye donc un peu !!!

For Each s In WordFile.Shapes
On Error Resume Next
s.TextFrame.TextRange = "aaa"
Next

WordObj.ActiveWindow.ActivePane.View.SeekView > > wdSeekCurrentPageHeader
For Each s In WordObj.Selection.HeaderFooter.Shapes
On Error Resume Next
s.TextFrame.TextRange = "aaa"
Next
WordObj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

A bientôt !!!
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Emcy" a écrit dans le message de
news:
Bonjours,

A l'aide d'une macro excel, j'ouvre un fichier word qui à pleins
de





zones
de
text en arrière plan (entête et pied de page) et en avant plan
(là






ou
on
ecris normalement)

J'arrive à remplir les zones de text en avant plan mais pas en
arrière




plan.
Quelqu'un a-t-il une solution ?

voici ma macro pour remplir en avant plan :

Sub Word()

Dim WordObj As Object
Dim WordFile As Object

Set WordObj = CreateObject("Word.Application")

WordObj.Visible = True
Set WordFile = WordObj.Documents.Open(NomenclatureWord) 'ouvre
la






nomenclature Word

For Each s In WordFile.Shapes
On Error Resume Next
s.TextFrame.TextRange = "aaa"
Next

Set WordFile = Nothing
Set WordObj = Nothing

End Sub