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
Partager