Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2011, 16h18   #1
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Par défaut ouvrir un word avec liaison sans message d'enregistrement à la fermeture

Bonjour à tous,

Nous avons des matrices permettant de consulter des documents word. Voici le code actuel :
Code :
1
2
3
4
5
6
7
8
 Private Sub CommandButton3_Click()
  Dim Appword
  Dim Chemin As String
  Chemin = TabChemin(1, 1) & "monDoc.doc"
  Set Appword = New Word.Application
  Appword.Visible = True
  Appword.Documents.Open FileName:=Chemin
End Sub
Le fichier monDoc intègre maintenant des liaisons vers des fichiers excel.
Je voudrais que quand l'utilisateur clique, monDoc s'ouvre, mette à jour les liens et quand l'utilisateur ferme le document il ne lui propose pas de l'enregistrer, comme c'est la cas maintenant. Cela est-il possible ?

Merci d'avance
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 18h33   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Il suffit de travailler sur l'évènement BeforeClose de l'application.

Mais le document doit-il être sauvé ou pas ?
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 09h43   #3
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Il suffit de travailler sur l'évènement BeforeClose de l'application.

Mais le document doit-il être sauvé ou pas ?

Mais cet évènement est sur l'application générale pas sur le document monDoc.doc que j'ouvre, non?

En fait dans cette matrice, chaque document peut être consulté (code de mon premier message) ou sélectionné par une case à cocher.

Si l'utilisateur valide à la fin, un nouveau document est créé et les fiches sélectionnées sont intégrées. Lors de la création du document final, j'ai désactivé les alertes pour que les messages de mises à jour des liaisons ne s'affichent pas mais que les mises à jour se fassent quand même.
Une fois la création terminée (copie des fiches dans ce document) je rompt les liaisons qui se transforment en images.

Mon problème se pose uniquement pour la consultation de monDoc.doc, j'ouvre mon document, il se met à jour. Quand je le ferme (croix rouge) je ne veux pas de message d'enregistrement et je ne veux pas l'enregistrer.


Je ne sais pas si je suis très claire.
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 09h54   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Pourquoi ne pas travailler avec un modèle ?
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 10h21   #5
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Tu peux faire après les mises à jours Si monDoc est une instance du document ouvert.

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 10h53   #6
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Pourquoi ne pas travailler avec un modèle ?
C'est à dire transformer monDoc.doc en modèle sur lequel je définirai un beforeClose ?
J'ai 3 fois 56 documents qui sont concernés et un code qui n'est pas du tout optimisé (le code en exemple est répété 56 fois). J'hésite à me lancer dans cette grosse modif en plus de mes liaisons vers excel...

Citation:
Envoyé par pgz Voir le message
Bonjour.

Tu peux faire après les mises à jours Si monDoc est une instance du document ouvert.

Cordialement,

PGZ
Je ne sais pas ce qu'est exactement une instance mais je pense que ce n'est pas le cas ici (voir exemple dans mon premier message)
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 10h59   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Par défaut, lors de l'ouverture d'un modèle, on crée un nouveau document et aucune modification est apportée au modèle.

Maintenant, l'évènement Document_close du document peut le faire, alors qu'avec un modèle, le problème ne se pose pas.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 11h53   #8
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Par défaut, lors de l'ouverture d'un modèle, on crée un nouveau document et aucune modification est apportée au modèle.

Maintenant, l'évènement Document_close du document peut le faire, alors qu'avec un modèle, le problème ne se pose pas.

Je ne maitrise pas du tout vba, je bricole et ce que tu m'expliques n'est pas clair pour moi.

J'ai essayé de rajouter sur monDoc.doc dans la feuille ThisDocument
Code :
1
2
3
Private Sub DocumentClose()
    Me.Close savechanges:=wdDoNotSaveChanges
End Sub
Cela ne change rien, j'ai toujours le message d'enregistrement sur la croix rouge de fermeture.

J'ai créé un modèle monDoc.dot, je l'appelle à la place de monDoc.doc : même résultat.

J'ai essayé de lui coller DocumentClose, pas de changement...

Reprenons, sans se soucier de l'existant et dans l'idéal : comment ouvrir à l'écran un document sur un clic bouton, mettre à jour les liaisons, les rompre (tant qu'à faire).
Quand l'utilisateur a fini de lire, il ferme ce document (par la croix rouge) sans message de confirmation d'enregistrement et sans enregistrer les modif (puisqu'on a rompu les liens).


Merci encore de ton aide
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 13h00   #9
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour, essaye de remplacer cela à la fin
Code :
Private Sub DocumentClose()
par
Code :
 Private Sub Document_BeforeClose()
Et laisser le même code plus mettre à nothing les variables
soit
Code :
1
2
3
4
Private Sub Document_BeforeClose()
    Me.Close savechanges:=wdDoNotSaveChanges
    set Appword = Nothing
End Sub
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 13h29   #10
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Je viens de faire un test sur un document neuf et il manquait un "_" et avec Document_close cela fonctionne beaucoup mieux.
En mixant les propositions j'arrive à
Code :
1
2
3
Private Sub Document_Close()
    Me.Saved = True
End Sub
Par contre si je fais ça directement sur monDoc.doc lorsque j'ouvre directement le document je n'ai pas le message non plus.

Donc question dérivée comment ne faire ce saved=true que dans ma macro sur mon bouton:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandButton3_Click()
Dim Appword
  Dim Chemin As String
  Chemin = TabChemin(1, 1) & "unofi03.doc"
  'Documents.Add "C:\vbetude\bibliotheque\Madame\produits\unofi03.dot"
 
 
  Set Appword = New Word.Application
     Appword.Visible = True
     Appword.Documents.Open FileName:=Chemin
 
     'rupture des liaisons
     Appword.Selection.WholeStory
     Appword.Selection.Fields.Unlink
     Appword.Selection.HomeKey Unit:=wdStory
 
End Sub
Appword.Documents.saved=true ne fonctionne pas.

Par contre, ActiveDocument.Saved = True à l'air de fonctionner, est ce que ça peut faire l'affaire?
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h02   #11
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Citation:
Envoyé par _Jnie_ Voir le message
Par contre, ActiveDocument.Saved = True à l'air de fonctionner, est ce que ça peut faire l'affaire?
Ca peut.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h12   #12
Membre régulier
 
Inscription : avril 2006
Messages : 118
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 118
Points : 72
Points : 72
Citation:
Envoyé par pgz Voir le message
Bonjour.


Ca peut.

PGZ

Parfait !


Merci messieurs de votre aide précieuse !


Edit : En fait, c'est
Code :
appword.activedocument.saved = true
_Jnie_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h54.


 
 
 
 
Partenaires

Hébergement Web