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

Macros et VBA Excel Discussion :

Modification de propriété de document - champs non mis à jour ou erreur 70 permission refusée [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Modification de propriété de document - champs non mis à jour ou erreur 70 permission refusée
    Bonjour,

    J'ai un petit souci que je n'arrive pas a comprendre ni à résoudre.

    Sur Excel 2010, j'ai un tableau avec une liste de document word a créer.
    A coté, j'ai un Template Word qui contient des champs.
    Ces champs sont liées aux propriétés personnalisées du document Word.

    En double cliquant sur le titre du document dans excel, je souhaite via VBA, créer un nouveau document issu du Template, le renommer et le sauvegarder quelque part sur le réseau et ensuite modifier les propriétés personnalisées.
    Les valeurs utilisées pour modifiées les champs Word sont issus d'un formulaire initié après double clic sur le titre du document dans le tableau Excel.

    Voici le premier code pour créer le document:
    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
     
        'Création du fichier Word
        Set wordapp = CreateObject("word.Application")
        wordapp.Visible = True
        Set DocWord = wordapp.Documents.Add(Template:="\\dom2.ad.sys\DFSLPT1ROOT\LPT1_TUS$\05_Field_Service\507_PGI_2016-2017\04-MACRO_FLORENT\DOSSIER_TEMPORAIRE_FP\Trame\Field Procedure Template French.dotx", NewTemplate:=False, DocumentType:=0)
        NomFich = "\\dom2.ad.sys\DFSLPT1ROOT\LPT1_TUS$\05_Field_Service\507_PGI_2016-2017\04-MACRO_FLORENT\DOSSIER_TEMPORAIRE_FP\En cours\" & Template_Property.TextBox11.Value & ".docx"
        wordapp.ActiveDocument.SaveAs Filename:=NomFich, FileFormat:= _
            wdFormatDocumentDefault, LockComments:=False, Password:="", AddToRecentFiles:= _
            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
            False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False
        wordapp.ActiveDocument.Close
        wordapp.Quit
        Set wordapp = Nothing
        Set DocWord = Nothing
    Voici le second code pour modifier les propriétés personnalisées du document :
    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
     
        'Modification des propriété personnalisées document word
        'Nécessite d'activer la référence DSO OleDocument Properties Reader 2.0
        'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351
        Dim DSO As DSOFile.OleDocumentProperties
        Set DSO = New DSOFile.OleDocumentProperties
        'Attention: Le fichier doit être préalablement fermé!
        DSO.Open sfilename:="\\dom2.ad.sys\DFSLPT1ROOT\LPT1_TUS$\05_Field_Service\507_PGI_2016-2017\04-MACRO_FLORENT\DOSSIER_TEMPORAIRE_FP\En cours\" & Template_Property.TextBox11.Value & ".docx"
        DSO.CustomProperties.Item("FP #") = Template_Property.TextBox1.Value
        DSO.CustomProperties.Item("Schedule Task & Step Number") = Template_Property.TextBox2.Value
        DSO.CustomProperties.Item("Current Revision") = Template_Property.TextBox3.Value
        DSO.CustomProperties.Item("Approved By DATE") = Template_Property.TextBox4.Value
        DSO.CustomProperties.Item("Approved By") = Template_Property.TextBox5.Value
        DSO.CustomProperties.Item("Prepared By DATE") = Template_Property.TextBox6.Value
        DSO.CustomProperties.Item("Prepared By") = Template_Property.TextBox7.Value
        DSO.CustomProperties.Item("Reference Drawing Title") = Template_Property.TextBox8.Value
        DSO.CustomProperties.Item("Reference MLI or Cost Code") = Template_Property.TextBox9.Value
        DSO.CustomProperties.Item("Equipment Type") = Template_Property.TextBox10.Value
        DSO.SummaryProperties.Title = Template_Property.TextBox11.Value
        DSO.Close True
        Set DSO = Nothing
    Tout fonctionne très bien a un détail près .
    A l'ouverture du document nouvellement créé, les champs personnalisés ont bien été modifiés mais n'ont pas été mis à jour.
    Je souhaiterais que les champs soient mis à jour pour que les collègues n'aient pas à penser que ce n'est pas le bon document qu'ils ont ouvert ou bien a leur demander de faire eux-mêmes la mise à jour des champs (Ctrl + A + F9)
    Et je ne vois pas comment je peux le faire automatiquement en vba à la fin du 2ème code.

    Sinon j'ai essayé d'inverser les 2 paragraphes de codes pour modifier les propriétés du Template avant création du document.
    Dans ce cas, les champs sont mis à jour, mais une fois sur 2 le code plante a la ligne "DSO.Close true" en me disant : Erreur 70 permission refusée.
    et je dois alors reseter les champs manuellement dans le Template avant de pouvoir refaire l'opération.

    Si quelqu'un avait une idée, je lui en serais extrêmement reconnaissant.

    Merci d'avance.
    Agd

  2. #2
    Membre à l'essai
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Modification de propriété de document - champs non mis à jour ou erreur 70 permission refusée
    Re-Bonjour,

    Bon, suite a de nombreuse recherche, la solution se trouve ci dessous :

    Etape 1 : Création du document
    Etape 2 : Mise a jour des propriétés
    Etape 3 : Rouvrir le document et demander la mise à jour des champs

    Ci-dessous le code pour mettre à jour les champs dans le corps de page, en-tête et pied de page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            ' Met à jour les champs dans le corps du document
            'objWord.Documents.WholeStory
            ActiveDocument.Fields.Update
            ' Passe dans le bas de page
            ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Fields.Update
            ' Passe dans l'entete
            ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Fields.Update
    Sujet résolu

    @++
    Agd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Champs non mis à jour dans la table principale
    Par ctsblv dans le forum IHM
    Réponses: 4
    Dernier message: 11/04/2013, 15h44
  2. [WD-2007] Modification de propriété de document par VBA
    Par Olivier.Ramon dans le forum VBA Word
    Réponses: 2
    Dernier message: 09/11/2011, 09h48
  3. Réponses: 2
    Dernier message: 08/10/2010, 20h49
  4. calcul de champ non mis à jour
    Par mumu64 dans le forum IHM
    Réponses: 7
    Dernier message: 16/12/2008, 09h49

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