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 :

[VBA] Modifier propriétés d'un autre document ouvert [WD-2013]


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    consultant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [VBA] Modifier propriétés d'un autre document ouvert
    Mesdames, messieurs, bien le bonsoir

    Après quelques heures de galère et avant de partir en weekend, je me tourne désespérément vers vous pour être sorti d'affaire en début de semaine...
    Je ne suis pas du tout développeur et "joue" avec VBA au besoin, en ayant appris sur le tas/internet... et il est fort probable que ma question ait une réponse très facile (ou mon problème dû à une erreur très bête... mes excuses par avance !)

    J'ai un document Word utilisé comme formulaire. L'utilisateur répond dans des TextBox_Object à 3 questions type Nom de son client, plus un choix de boutons radios où il choisit une langue à utiliser.
    A partir de cela, un joli bouton dans ce document (que nous pouvons appeler DOC_1) va s'occuper de lui personnaliser un template de proposition commerciale, pré-existant en plusieurs langues...

    Dans mon dossier, se trouve un sous-dossier TEMPLATES contenant ces documents pré-existants, et qui contiennent chacun des DOCPROPERTY réutilisées dans tout mon template (type wdPropertyCompany pour le nom du client).

    Ma macro va donc
    1- enregistrer mes résultats du formulaire
    2- choisir selon le choix de langue le bon template de base à utiliser
    3- passer les réponses du formulaire de DOC_1 aux DOCPROPERTY du template ouvert pour le personnaliser...

    Et là, ça coince. En gros j'ai sûrement un problème d'activation de mon nouveau template ouvert puisque la macro me modifie bien les bonnes propriétés, mais sur DOC_1 et pas l'autre...
    J'ai essayé pas mal (un peu tout ce que j'ai trouvé/imaginé en fait*...) de chose pour activer mon template mais rien ne fonctionne... ou mon souci est parce que ma macro est dans ThisDocument et ne peut donc pas passer sur l'autre...?

    Toute aide est la bienvenue ce petit souci...
    Merci, et bon weekend!

    * J'ai testé sans succès X variantes du activate ou approchant, et des commandes "DSO": ça semblait top sur le papier, mais sans succès... parce que sur un PC corpo et sans accès admin pour la bibliothèque dso??..
    ** pour une next step, je souhaite enregistrer ce doc template personnalisé directement dans un autre ficher.
    > L'ami Word est-il capable de transformer au passage ce qui était mes variables/docproperty dans mon document par des valeurs "fixes" - pour qu'elles ne puissent plus bouger si les docproperty sont, elles, changées manuellement...?

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    ------
    
    Private Sub LaunchMacro_Click()
    
        ' Set variables from form fields
    
        Dim Client_Name As String
          Client_Name = Me.TextBox_ClientName1
            
        Dim Project_Name As String
          Project_Name = Me.TextBox_SubjectName
    
        Dim SubDate As String
          SubDate = Me.TextBox_SubmissionDate
            
        Dim docpath As String
            
        ' Open template document depending on language
        
        If LanguageOptionFR.Value = True Then
        
            Set wordapp = CreateObject("word.Application")
            docpath = ActiveDocument.Path & "\TEMPLATES\French.docx"
            wordapp.Documents.Open docpath
            wordapp.Documents("French.docx").Activate
            
            ActiveDocument.BuiltInDocumentProperties(wdPropertySubject) = Project_Name
            ActiveDocument.BuiltInDocumentProperties(wdPropertyCompany) = Client_Name
            ActiveDocument.BuiltInDocumentProperties(wdPropertyComments) = SubDate
    
            ' NEXT STEP: save doc in client folder with adapted filename
    
        ElseIf LanguageOptionEN.Value = True Then
        
            Set wordapp = CreateObject("word.Application")
            docpath = ActiveDocument.Path & "\TEMPLATES\English.docx"
            wordapp.Documents.Open docpath
            wordapp.Documents("English.docx").Activate
            
            ActiveDocument.BuiltInDocumentProperties(wdPropertySubject) = Project_Name
            ActiveDocument.BuiltInDocumentProperties(wdPropertyCompany) = Client_Name
            ActiveDocument.BuiltInDocumentProperties(wdPropertyComments) = SubDate
    
            ' NEXT STEP: save doc in client folder with adapted filename
    
        ElseIf LanguageOptionDE.Value = True Then
        
            MsgBox ("German not yet supported")
            
        Else
        
            MsgBox ("Please choose a language")
    
        End If
        
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Commence par enregistrer tes modèles en docx en vrais modêles (dotm ou dotx)

    Ensuite, tu enregistres (enregistrer sous...) ton modèle sous le nom de ton document final, et tu inscris tes propriétés et tu vas les garder avec l'enregistrement final de ton document,

    Puisque ta macro est déjà dans Word, tu n'as pas besoin de créer un nouvel objet Word. Tu peux traiter plusieurs documents dans une seule application Word.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Candidat au Club
    Homme Profil pro
    consultant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Top ! En effet, ca marche beaucoup mieux avec tout ça ! Parfaitement même... Merci !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2016, 13h13
  2. VBA: Insérer le contenu d'un document word dans un autre
    Par kabbajreda dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/08/2007, 18h56
  3. [VBA-E][2k7] Enregistrer une feuille d'un classeur dans un autre document
    Par tazamorte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2007, 18h15
  4. [VBA-W] Faire une fusion dans un document ouvert
    Par zahui_eric dans le forum VBA Word
    Réponses: 6
    Dernier message: 22/01/2007, 12h41
  5. [C#] Modifier Propriété d'un contrôle d'une autre Form
    Par sara21 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/09/2006, 20h41

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