|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
Bonjour,
j'ai écrit 1 petite application OLE qui ouvre 1 modèle Word & le relie avec la base de donnée. L'utilisateur peut alors modifier la présentation. Je coupe le lien avec Word et J'attends que le document soit libéré pour lancer le publipostage. Si l'utilisateur clicque pour fermer word sans avoir enregistré ses modifs, il a 1 message "voulez-vous enregistrer le document"...mais word l'a déjà libéré. Mon programme croit que le modèle a été fermé et lance le publipostage... qui plante car Word ne semble pas disponible tant qu'on a pas répondu à la boite de dialogue ci-dessus. Le problème de libération n'existe avec aucune autre version de Word. Le problème de la boite de dialogue qui interdit toute autre action existe dans toutes les versions. Peut-on désactiver cette libération anticipée dans Word2007, ou comment detecter qu'une boite de dialogue bloque Word ? merci pour votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Si tu affectes la valeur True à la propriété Saved, le message devrait ne plus s'afficher.
Il est possible que ce soit le modèle qui ne soit pas encore sauvegardé.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
c'est l'utilisateur qui clicque...je ne pilote plus word et je ne fais pas de save...
J'ai ouvert le modèle et j'attends simplement qu'il soit refermé...(et les modifications de l'utilisateur enregistrées) Il est certain que les dernières modifications ne sont pas sauvées puisque c'est pour ça que word pose la question. Je ne comprends pas à quoi servirait cette option ? |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
A faire croire à Word que le document est sauvegardé.
En fait quand tu fais un save, cette propriété est mise à True.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
mais alors il ne vas pas sauver les modifs en cours...
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
C'est ce que tu demandais non ?
Si tu veux une sauvegarde, tu fais un Ou alors j'ai rien compris.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
je crois que tu ne comprends pas...
je n'ai pas la main sur Word...c'est l'utilisateur qui est en train de modifier son modèle (que j'ai créé avec la macro), et qd il a fini il quitte Word (et veut enregistrer son travail bien sûr)...et la ça lui demande d'enregistrer... pendant ce temp, mon application (qui n'est pas dans Word) attend que le doc soit libérré pour lancer le publipostage. Est-ce que tu comprends mieux ? |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Alors, il faut vérifier que le propriété Saved est bien à True.
Si elle n'est pas à true, c'est que le document n'est pas libéré. Tu peux aussi lancer une procédure sur fermeture du document. Ici et c'est Autoclose qui devrait faire l'affaire.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
je crois qu'on a 1 pb de compréhension...
comment puis-je vérifier la proprité d'un document sans être dans Word et sans ouvrir le document ? S'il y a 1 solution elle m'interesse... Quand à gerrer des evenements, ce serait 1 solution, mais comment faire ça ? Phase 1 : Mon programme OLE ouvre 1 Modèle choisi par l'utilisateur, qui peut venir de n'importe ou (donc pas de possibilité d'y avoir mis 1 macro avant), et le lie avec ma base de donnée (si c'est pas déjà le cas) pour que l'utilisateur puisse y incorporer ses champs de fusion et mettre en forme. Mon 1er programme coupe alors la liaison avec Word. Phase 2 : Quand je pense que la modification du modèle est finie (parce qu'il est libéré) je lance un autre programme OLE qui effectue le publipostage. Comment programmer dans la phase 1 la gestion d'un evenement ? La seule solution que je connaise serait de mettre 1 macro ds Normal.dot pour faire ça, mais si la macro n'est pas installée, ça devient trés compliqué, surtout en fonction des sécurités... J'aurais donc aimé que le programme OLE puisse tout faire sans macro à installer. Merci en tout cas pour ton aide : si tu arrives à comprendre ce que je veut faire, je suis sûr qu'on va trouver une solution simple... |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Je ne vois pas comment faire si l'application appelée ne peut pas utiliser de code.
J'ai essayé avec un doevent, mais c'est pas la solution
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
faudrait peut-être prendre le pb sous 1 autre angle :
1) Pourquoi Word2007 dereserve le documents avant de savoir la réponse (si on veut le sauver), alors que les versions antérieurs ne faisaient pas ça et que ç'est totalement incohérent ? - Si c'est un bug, yaura peut-être un correctif (j'ai installé le SP1 et ça change rien). - Si c'est volontaire, il doit y avoir 1 raison et un moyen de le désactiver. 2) comment detecter qu'une boite de dialogue monopolise Word et empeche toute action tant qu'on y a pas répondu. 3) Si on est capable de le detecter, est-il possible d'y répondre par programme. |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Ça ne le faisait pas sur les version précédentes ?
As-tu un morceau de code ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
Le pb de la libération dès le clic sur la "X" n'existe que depuis Word2007.
Le code c'est tout simplement un Open du fichier. La cde OPEN provoque 1 erreur tant que le document n'est pas libéré (fermé). Mais Word2007 libère la reservation sur le fichier dès le clic sur la croix pour fermer word, alors que le document est toujours visible et qu'on a la boite de dialogue "enregistrer les modifs ?". Le problème de la boite de dialogue qui empêche toute autre commande Word existe dans toutes les versions. 2 conséquences graves : - On peut ouvrir le DOC avec 1 autre logiciel (la version non modifiée), et avoir 2 cessions du meme document en "modification". - Word est bloqué sur sa boite de dialogue et aucun programme OLE ne fonctionne tant qu'on a pas répondu. |
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
Lorsqu'une boite de dialogue monopolise Word, la commande "MonDoc = Documents.open(nom du modele)" ne provoque pas d'erreur mais le document n'est pas réouvert et n'importe quelle commande avec "Mondoc" plante (Ex.Mondoc.name).
Qulle que soit la version de Word, on ne peut pas lancer 1 nouvelle cession de word (en cliquant sur son icone) si on a cette boite de dialogue ouverte. Word est donc capable de la detecter. Il doit y avoir 1 commande qui permet de savoir qu'une fenêtre modale est en cours... si je pouvais tester genre "if MonWord.BoiteDeDialogueEnCours then... " ça me permettrait au moins d'éviter le plantage, en attendant la solution au 1er problème. Pire : Dans mon appli Word J'ai essayé de parcourrir la collection "Documents" pour detecter si le modèle que je veut ouvrir est déjà ouvert dans 1 autre instance : ca plante. N'importe quelle commande sur la collection "Documents" plante si la boite de dialogue est ouverte (Ex. : Documents.Item(x) provoque 1 erreur). j'ai passé 3 jours sur ce pb...je n'en peut plus...AU SECOURS BILL !!! Au secours ....aidez moi SVP (PS j'ai modifié les précédants messages pour essayer d'être plus clair) |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Développeur informatique Inscription : juin 2002 Messages : 171 ![]() |
Bon, j'ai poursuivi mes recherches...voila ou j'en suis pour faire le point :
1) Il semble y avoir 1 Bug ds Word 2007 : dès le clic pour fermer Word le document est libéré, malgrés qu'il reste visible en attendant la réponse à la question "souhaitez-vous enregistrer les modifs ?". Le document peut donc être ouvert par 1 autre application...sans les dernières modifs pas encore enreg.). Une Solution pourrait être d'activer 1 option pour enregistrer les modifs ss poser de question lorsqu'on ferme Word (soit par les menus de Word, soit par macro à l'ouverture du document). Mais je ne connais pas cette option. Si qqun a 1 solution pour éviter ou detecter ce pb, ou le N° perso.de BILL, je suis preneur. 2) Chaque fois qu'on ouvre 1 boite modale dans Word (comme ci-dessus), toutes les cessions de Word sont bloquées. Vous pouvez le vérifier en ouvrant 2 documents Word et en allant dans les options sur l'une d'elles...l'autre n'est plus activable. (toutes les fenêtres de Word activables depuis les menus semblent modales, enregistrer sous, boites de dialogues...). Ce n'est pas un Bug, toutes les versions de Word font ça. Mais le pb est avec l'Automation : comment savoir si Word est dispo qd on lance l'appli ? Je continue à chercher mais j'aurais vraiment besoin d'aide car je patine... |
|
|
00
|
|
|
#16 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Citation:
Citation:
Si tu mets la propriété Saved à true, plus de question. Pas de Boîte de message.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com