Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de génération Word lorsque plusieurs documents sont ouverts [ Langages dérivés / VBA ] (wismerhillbest)

vendredi 8 août 2008 à 08:53:07 | Problème de génération Word lorsque plusieurs documents sont ouverts

wismerhillbest

Bonjour,

Je vous expose mon problème :
Grace à une application Access, je dois générer un document Word dont la plupart des informations proviennent de la base de données.

Dans le code, je définis donc un objet Word_Application dans lequel j'ouvre un document "Nom_Document"
[CODE]
Public Word_Application As New Word.Application
Set Word_Application = CreateObject("Word.Application")
Word_Application.Documents.Open FileName:=Nom_Document
[/CODE]

[COLOR="Red"]Le Problème :[/COLOR]
Lorsque le programme est en train de générer le document Word, si je lance un autre document Word (nouveau ou existant), la génération Word continue sur le document actif. Je n'arrive pas à le faire rester sur le document "Nom_Document" ouvert via l'instruction .Open

J'ai réussi plus ou moins à cerner le problème. J'arrive parfois à faire fonctionner le programme à condition que dans l'objet Word_Application, il ne me retourne que 1 document via l'instruction suivante
[CODE]Word_Application.Documents.Count[/CODE]

Dans le cas où il y a problème, c'est parce qu'il me renvoie 2 ou 3 suivant le nombre de fichiers ouverts.

Avez vous une idée pour résoudre ce problème ?
Sachant que ce qu'il faudrait, c'est qu'il se trouve un processus Word associé à chacun des documents ouverts ce qui je pense permettrait de résoudre le problème.

Merci d'avance.


PS : Pour précision
Cette application a été récupéré dans l'état afin de la maintenir et toute l'application est codée dans ce sens à savoir

[CODE]
Word_Application.selection.PageSetup.LeftMargin = 70
Word_Application.selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=Numéro_ligne
Word_Application.selection.HomeKey Unit:=wdLine
[/CODE]

Or il n'est pas possible d'effectuer ces opérations sur un objet document mais uniquement sur un objet Word (enfin il me semble).

Merci d'avance

vendredi 8 août 2008 à 09:22:39 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

gillardg


n'y a t'il pas moyen de forcer une session Word "cachée" pour qu'elle n'interfère pas avec d'autres documents???



bonjour chez vous!
< body>

vendredi 8 août 2008 à 09:24:25 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

Renfield

Administrateur CodeS-SourceS
Public Word_Application As New Word.Application
Set Word_Application = CreateObject("Word.Application")

félicitations, tu as lancé deux instances de Word...

soit faire :
Public Word_Application As New Word.Application

soit :
Public Word_Application As Word.Application
Set Word_Application = CreateObject("Word.Application")

soit:
Public Word_Application As Word.Application
Set Word_Application = New Word.Application


pour ton probleme, ne bosse plus sur l'application Word...
mais sur l'instance de ton document

vendredi 8 août 2008 à 09:40:46 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

wismerhillbest

Pour infos, j'étais bien passé dans un premier temps par :
Public Word_Application As Word.Application
Set Word_Application = CreateObject("Word.Application")

Le soucis, c'est que j'ai tenté plein de chose en fonction des réponses des différents forums sur lequel j'ai posé ma question.

La ligne de code suivante ne m'a jamais lancé 2 processus WINWORD donc je ne sais pas si 2 instances ont été créées.
Public Word_Application As New Word.Application
Set Word_Application = CreateObject("Word.Application")

J'aurai bien voulu travailler sur l'instance de mon document mais comme je l'ai dis plus haut, l'ensemble de l'application est codée de cette manière :
[CODE]
Word_Application.selection.PageSetup.LeftMargin = 70
Word_Application.selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=Numéro_ligne
Word_Application.selection.HomeKey Unit:=wdLine
[/CODE]
Il n'est pas possible d'avoir les mêmes fonctionnalités entre l'instance Word et l'instance du document. Le nombre de lignes de codes à changer étant énorme, je préfère ne rien toucher au risque de régression et une charge de travail supplémentaire non négligeable.

vendredi 8 août 2008 à 09:45:21 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

Renfield

Administrateur CodeS-SourceS
tu n'as pourtant pas le choix...

si tu ne précise pas le document employé, Word va utiliser le document actif.

tu aura donc des interferences, si tu joues avec Word pendant ce même labs de temps.

vendredi 8 août 2008 à 09:45:36 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

wismerhillbest

n'y a t'il pas moyen de forcer une session Word "cachée" pour qu'elle n'interfère pas avec d'autres documents???

Justement, j'ai essayé mais je n'y suis pas encore arrivé. Je voulais bien définir une instance unique de Word lors de la création de mon objet.
Mais lorsque je lance un nouveau document Word, il utilise la même instance au lieu d'en utiliser une autre.

Par contre, si je lance un autre document Word puis mon programme, je n'ai plus aucun problème (même si je relance un autre document Word apres le début du programme car il y a 2 instances de Word (1 pour mon programme et 1 pour les autres documents ouverts manuellement)

vendredi 8 août 2008 à 09:49:57 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

Renfield

Administrateur CodeS-SourceS
quand tu lance Word, il fait un appel à GetObject, cherchant une instance, dans le but d'accelerer le chargement.

dans ton code, tu spécifie clairement que tu souhaites une nouvelle instance, donc pas de souci.

il faudrait un moyen pour dire que notre objet n'est pas libre...
le supprimer de la ROT, en quelque sorte, j'ignore si c'est faisable, mais ca n'induirait que peu de charge.

vendredi 8 août 2008 à 09:55:18 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

wismerhillbest

Peux tu m'expliquer ce qu'est la ROT pour que je me renseigne de ce coté ?

vendredi 8 août 2008 à 10:08:03 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

Renfield

Administrateur CodeS-SourceS
"Running Object Table"

c'est là ou va chercher GetObject

vendredi 8 août 2008 à 16:57:41 | Re : Problème de génération Word lorsque plusieurs documents sont ouverts

wismerhillbest

Après plusieurs recherches, je n'ai pas réussi à trouver comment gérer la ROT.
Vu que je n'ai pas beaucoup le temps d'aller plus loin, j'ai fait une petite bidouille (qui n'est certes pas propre mais qui a l'air de fonctionner).

En fait, je me suis aperçu que lorsqu'on ouvre un document Word alors que plusieurs process existent, celui-ci vient se rattacher au premier processus Word ouvert (à vérifier) donc, j'ai créé 2 instances de Word et je travaille sur la deuxième.


1 2

Cette discussion est classé dans : problème, application, code, word, document


Répondre à ce message

Sujets en rapport avec ce message

[VBA Word] Ouverture et modification de classeur Excel sous Word [ par fguihot ] Bonjour à tous !!!Petite mise au point : J'ai découvert le VBA il y a peu, et il est possible que je passe à côté de grosses erreurs conceptuelles... erreur word application [ par lyoan ] Bonjour à tous,Je vous explique mon problème :j'ai réalisé un logiciel de facturation pour un ami et comme pour tout logiciel de facturation il faut p Quitter word [ par raphael_george ] Salut à tousmerci pour l'attention portée à mes requetes en voici une autre:je voudrais pouvoir quitter word depuis excel avec ce code:Sub Impression_ Deployer son application [ par cherrymoon08 ] Bonjour à tous, Voilà je vous explique mon problème, ou plutot mon interrogation sur le déploiement de mon application. J’ai donc développé, en VB.n bien arreter directX [ par Finality ] Bonjour tout le monde,je suis en train de créer une application VB.Net avec directX 9. Mon application est bien avancée mais il me reste un problème  lancer un document Word à partir de l'application VB.net [ par rahma_bou22 ] Je voudrais savoir comment, à partir du clik d'un bouton, je pourrais lancer un document word existant.c'est urgent . Word Access Sauvegarde [ par mincealors ] Hello à tous. J'ai créé plusieurs formulaires Access qui, part des requêtes et plusieurs traitements, produisent des documents Word à partir de modèl VB et WORD [ par cricri ] Mon application est en relation avec word, car les documents sont de word. Lorsque mon application est terminé, celle-ci se reduit afin de faire appar Problème avec Word [ par jayrock ] Bonjour, J'ai un gros soucis avec word. J'ai fait une application qui ouvre un document word et qui assigne aux signets présents dans le document word Ouvrir un document Word à partir d'une application VB [ par titi18 ] Bonjour!J'aimrai ouvrir un document Word non modifiable à partir d'un bouton dans mon application VB.J'ai essayé avec l'instruction OPEN mais si le fi


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,22 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.