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 27/04/2011, 18h11   #1
Membre actif
 
Avatar de Souriane
 
Femme Guylaine C.
Assistant aux utilisateurs
Inscription : septembre 2009
Messages : 157
Détails du profil
Informations personnelles :
Nom : Femme Guylaine C.
Âge : 39
Localisation : Canada

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Service public

Informations forums :
Inscription : septembre 2009
Messages : 157
Points : 153
Points : 153
Par défaut "Doc.Add ActiveDoc.FullName" + Macro Sur sortie

Bonjour,

J'ai créé la macro suivante qui s'active lors de l'ouverture d'un document (MonDoc). Cette macro est intégrée uniquement dans documents qui sont en mode "Lecture seule". Le but est d'empêcher l'utilisatrice d'effacer mon "modèle" par erreur donc à l'ouverture, une copie du document est créée avec Application.Documents.Add ActiveDocument.FullName.

J'aurais pu créer de vrais modèles (.dotm) mais il y a des modèles qui sont fait pour être modifié à l'occasion par l'utilisateur donc ceux-là ne son ni en lecture seule, ni dotm. Et comme je ne voulais pas me retrouver avec des "modèles" à 2 répertoires différents avec 2 méthodes d'accès différentes, j'ai opté pour l'ajout d'une macro sur ouverture.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub Document_Open()
 
'Vérifie si le document est bien en lecture seule, sinon, arrête la macro
     If ActiveDocument.ReadOnly = True Then
 
'Enlève l'option lecture seule sur MonDoc (sinon l'option sera conservée lors de la sauvegarde de la copie créée)
    ActiveDocument.ReadOnlyRecommended = False
 
'Créé une copie MonDoc
 Application.Documents.Add ActiveDocument.FullName
 
'Ferme MonDoc original
Documents(2).Activate
    ActiveDocument.Close wdDoNotSaveChanges
 
'Ramène le focus sur la CopieDeMonDoc
Documents(1).Activate
End If
 
End Sub
Voici le problème :

Dans plusieurs des documents qui ont ces macros, il y a des champs avec des macros "Sur sortie". Mais elles ne fonctionnent pas étant donné que Application.Documents.Add ActiveDocument.FullName ne copie pas le répertoire "ThisDocument" de MonDoc.

Avez-vous une solution de contournement? J'ai environ une vingtaine de document qui ont ce problème.

Merci de votre aide!

Souriane
Souriane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 19h02   #2
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,

Peut-être récupérer la propriété path du modèle de document.
Je me suis permis d'initialiser une variable model pour identifier le document modèle, je trouve que cela est plus clair.
De même, j'ai mis nouv pour identifier le nouveau document (possible si pas de construction en cascade).
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Sub Document_Open()
dim model as document
set model = activedocument
dim chemin as string

If model.ReadOnly = True Then
 
'Enlève l'option lecture seule sur MonDoc (sinon l'option sera conservée lors de la sauvegarde de la copie créée)
    model.ReadOnlyRecommended = False
 
'Créé une copie MonDoc
 set nouv = Application.Documents.Add (model.FullName)
chemin=model.path 

'Ferme MonDoc original
model.Close wdDoNotSaveChanges
set model=Nothing
 
'Ramène le focus sur la CopieDeMonDoc
nouv.Activate
End If
 
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 27/04/2011, 19h45   #3
Membre actif
 
Avatar de Souriane
 
Femme Guylaine C.
Assistant aux utilisateurs
Inscription : septembre 2009
Messages : 157
Détails du profil
Informations personnelles :
Nom : Femme Guylaine C.
Âge : 39
Localisation : Canada

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Service public

Informations forums :
Inscription : septembre 2009
Messages : 157
Points : 153
Points : 153
Bonjour!

Je suis désolée! Je ne sais pas où j'avais la tête… Ce n'est pas "ThisDocument" qui disparaît (pourtant j'en étais sûre tout à l'heure!)

Bref, c'est l'information dans le champ qui disparaît. Quand la macro ci-dessus a terminée, si je déverouille mon formulaire et que je vais voir les propriété de mon champ, sous "Exécuter la macro", "À la sortie", le nom de la macro n'y est plus.

Pourtant si je retourne dans MonDoc initial, j'y vois encore "ThisDocument.MaMacro"

Une idée de contournement?

Merci pour ton temps!

Souriane
Souriane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 20h55   #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,

juste en passant, pourquoi ne pas créer une copie locale du document.
Plus besoin de savoir si on le modifie ou pas.

à l'ouverture du document.

Et une macro qui sur fermeture de Word viderait le rep de destination pour ne pas garder la copie.

Ou encore travailler sur les droits Windows du fichier et pas sur le répertoire.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h23.


 
 
 
 
Partenaires

Hébergement Web