IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

"Doc.Add ActiveDoc.FullName" + Macro Sur sortie


Sujet :

VBA Word

  1. #1
    Membre émérite Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre émérite Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Par défaut
    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

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    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 !

Discussions similaires

  1. Macro sur Excel/Boucle sur les lettres
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/11/2005, 12h56
  2. Réponses: 2
    Dernier message: 18/11/2005, 22h40
  3. Macro sur Access
    Par beurnoir dans le forum Access
    Réponses: 2
    Dernier message: 06/10/2005, 14h38
  4. Macro sur Access
    Par beurnoir dans le forum Access
    Réponses: 1
    Dernier message: 01/10/2005, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo