OVH Cloud OVH Cloud

probleme avec AddFromFile

4 réponses
Avatar
Jean-Francois Courteau
Word 8

Je tente de fusionner plusieurs fichiers dans un seul document et d'afficher
ce dernier à l'usager via un programme visual basic. Le tout fonctionne à
merveille si ce n'était qu'une page blanche en entête du document est crée
et je tente d'éviter sa création ou de tout simplement la supprimer. Je vous
laisse un exemple du code utilisé et Merci de votre aide.

Dim wrd As Word.Application

Set wrd = CreateObject("word.application")
call wrd.Documents.Add()
wrd.ActiveWindow.View.Type = wdMasterView
Call wrd.ActiveDocument.Subdocuments.AddFromFile("C:\fusion_taxi\Proposition
francais page 1.dot")
Call wrd.ActiveDocument.Subdocuments.AddFromFile("C:\fusion_taxi\avenant
résiliation français.dot")
wrd.ActiveWindow.View.Type = wdPageView
wrd.Visible = True
Set wrd = Nothing

Jean-François Courteau

4 réponses

Avatar
Guy Moncomble
Bonjour à tous,
dans le message : ,

| Word 8
|
| Je tente de fusionner plusieurs fichiers dans un seul document et
| d'afficher ce dernier à l'usager via un programme visual basic. Le
| tout fonctionne à merveille si ce n'était qu'une page blanche en
| entête du document est crée et je tente d'éviter sa création ou de
| tout simplement la supprimer. Je vous laisse un exemple du code
| utilisé et Merci de votre aide.

Ce que tu fais n'est pas exactement une fusion de document, c'est
l'incorporation de sous-documents dans un document ordinaire.
Ce faisant tu transformes celui-ci en document maître, même si c'est ce
que tu voulais faire, ce n'est pas nécessairement une bonne idée (pb
avec les documents maître). Où les choses se gâtent c'est lorsque que tu
prétends faire cela avec des documents qui ne sont sûrement pas des
sous-documents, puisque ce sont des modèles. Ce seul fait entraîne, et
je ne sais pas encore pourquoi, la création d'une page vierge. Tu peux
aussi bien insérer un .doc, si ce n'est pas un sous-document, le
résultat sera le même.
Si malgré tout, cette méthode aberrante te convient, pourquoi pas. La
première page te gène ? supprime la.
Comment ? voilà :
wrd.ActiveDocument.Bookmarks("startofdoc").Select
wrd.ActiveDocument.Bookmarks("page").Select
wrd.Selection.Delete

Mais n'oublie pas un fait : ton application qui fonctionne à merveille a
créé un document "bizarre", il va falloir faire avec.
--
A+

GMO MVP Word

Et surtout :
- ne lisez pas le manuel de Word, encore moins l'aide
- ne réfléchissez pas au problème qui se pose à vous
- expliquez le plus confusément possible les phénomènes constatés
- exigez une réponse immédiate
- expliquez à celui qui vous aide comment et pourquoi il aurait
du appliquer *votre* solution (qui évidemment ne marche pas)
- niez l'évidence : la solution qu'un bénévole a parfois mis des
heures à mettre au point ne marche pas chez vous qui l'appliquez mal
depuis 2 minutes.
- ne dites ni bonjour ni merci
- ne perdez pas la face : ne faites savoir à personne que vous
avez été dépanné

- insultez les contributeurs bénévoles, ils ne veulent pas
l'avouer, mais ils adorent cela. Si c'est un MVP vous avez un bonus.
Avatar
Jean-Francois Courteau
Merci , voilà qui me remets les pendules a l'heure lol.

Vu le sarcasme , j'ai donc changé la façon de faire. J'ouvre maintenant tout
mes modèle, en emplie les informations automatiquement et à l'aide d'un
petit code je les fusionne au sein d'un même document. Je me retrouve avec
le même problême soit une page blanche mais cette fois ci elle est à la fin.
Je veux bien "RFM" mais l'aide disponible est tellement claire et
significative que mon entendement à peine à décortiquer le tout. Sur ce je
présume que la formule laissé dans votre réponce est aussi applicable
concernant la dernière page en modifiant les paramètres. Je laisse tout de
même la nouvelle plage de code étant un fervant de la critique.

Set curDoc = wrd.Documents.Add
Set curRange = curDoc.Range
curDocName = curDoc.Name
pageCnt = (wrd.Documents.Count - 1) 'we do not count ourself
i = 0
For Each doc In wrd.Documents
If (doc.Name <> curDocName) Then
i = i + 1
If (doc.ProtectionType <> wdNoProtection) Then
doc.Unprotect
End If
Set docRange = doc.Content
docRange.WholeStory
docRange.Copy
curRange.Paste
curRange.Collapse wdCollapseEnd
If (i < pageCnt) Then
curRange.InsertBreak wdSectionBreakNextPage
End If
doc.Close False
End If
Next doc

Merci de la précédente réponse et du futur commentaire
Jean-François Courteau
Avatar
Guy Moncomble
Bonjour à tous,
dans le message : ,

| J'ouvre
| maintenant tout mes modèle, en empilant les informations
| automatiquement et à l'aide d'un petit code je les fusionne au sein
| d'un même document. Je me retrouve avec le même problême soit une
| page blanche mais cette fois ci elle est à la fin.

Ce qui rend ton document complètement dépendant de l'ordre dans lequel
tu as ouvert ceux nécessaires à la fusion. Il y avait d'autres méthodes
possibles comme par exemple utiliser des champs INCLUDETEXT.
Par contre cette fois, je ne constate pas de problème de page blanche,
pas à la fin en tous cas ou pas toujours !!

| Sur ce je présume que la
| formule laissé dans votre réponce est aussi applicable concernant la
| dernière page en modifiant les paramètres.

oui, le signet pour aller à la fin est endofdoc, mais il y a d'autres
manières d'y arriver !

--
A+

GMO MVP Word
Avatar
Jean-Francois Courteau
Merci M. Moncomble le résultat escompté est obtenu :-).

Jean-François Courteau