Bonjour,

J'utilise la classe Cword de l'exemple Pilotage de Word pour permettre aux utilisateurs de créer leur propre état, mais les balises ne fusionne pas,ci-dessous mon code .Aurais-je oublié un truc ?
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
PROCEDURE Modele_devis_Word_CL(modeledev,id_groupedevis) 
 
HExécuteRequête(REQ_Devis_du_groupe,hRequêteDéfaut,id_groupedevis)
 
// Variable chaine
lib_duree est une chaîne
civilite est une chaîne
 
// Variables 
sChaineDeRemplacement est une chaîne 
 
 
// Ouvre le modèle 
gpclWord:OuvrirDoc(modeledev) 
// Pause pour être (à peu près) certain que le modèle est bien ouvert. 
Multitâche(15) 
 
 
gpclWord:EnregistrerSous() 
 
 
Piece_jointe.NumClient=REQ_Devis_du_groupe.NumClient
Piece_jointe.Date=fDate(gpclWord:m_sDocEnCours)
Piece_jointe.Nomdocjoint=ExtraitChaîne(gpclWord:m_sDocEnCours,1,"\",DepuisFin)
Piece_jointe.Chemin=gpclWord:m_sDocEnCours
Piece_jointe.Taillefichier=fTaille(gpclWord:m_sDocEnCours)
Piece_jointe.Commentaires="Export Word"
 
HAjoute(Piece_jointe)
 
 
SI HLitRecherchePremier(Contact,NumContact,REQ_Devis_du_groupe.NumContact) ALORS
	SELON Contact.Civilite
		CAS 1 //mr
			civilite = "Monsieur"
		CAS 2 //mme
			civilite = "Madame"
		CAS 3 //mlle
			civilite = "Mademoiselle"
		AUTRE CAS
			civilite=""
	FIN
 
	// Insertion valeur 2 
	sChaineDeRemplacement=civilite
	gpclWord:RechercherRemplacer("[TITRE]",sChaineDeRemplacement ) 
	// Insertion valeur 3
	sChaineDeRemplacement=Contact.Prenom
	gpclWord:RechercherRemplacer("[PRENOM]",sChaineDeRemplacement ) 
	// Insertion valeur 4 
	sChaineDeRemplacement=Contact.Nom
	gpclWord:RechercherRemplacer("[NOM]",sChaineDeRemplacement ) 
	sChaineDeRemplacement=Contact.EMail
	gpclWord:RechercherRemplacer("[EMAIL_CONTACT]",sChaineDeRemplacement ) 
	// Insertion valeur 4 
	sChaineDeRemplacement=Contact.Téléphone
	gpclWord:RechercherRemplacer("[TEL_CONTACT]",sChaineDeRemplacement ) 
	// Insertion valeur 4 
	sChaineDeRemplacement=Contact.Mobile
	gpclWord:RechercherRemplacer("[MOB_CONTACT]",sChaineDeRemplacement ) 
FIN
 
SI HLitRecherchePremier(Job,IDJob,Contact.idJOB) ALORS
	// Insertion valeur 
	sChaineDeRemplacement=Job.job_libelle
	gpclWord:RechercherRemplacer("[FONCTION]",sChaineDeRemplacement ) 
FIN
 
 
// VALEURS CLIENTS
 
// Insertion valeur 1 
SI HLitRecherchePremier(Client,NumClient,REQ_Devis_du_groupe.NumClient) ALORS
	sChaineDeRemplacement=Client.Société
	gpclWord:RechercherRemplacer("[NOM_SOCIETE]",sChaineDeRemplacement ) 
 
	sChaineDeRemplacement=Recup_Civilite(Client.Civilite)
	gpclWord:RechercherRemplacer("[TITRE_PARTICULIER]",sChaineDeRemplacement ) 
	// Insertion valeur 3
	sChaineDeRemplacement=Client.Prenom
	gpclWord:RechercherRemplacer("[PRENOM_PARTICULIER]",sChaineDeRemplacement ) 
	// Insertion valeur 4 
	sChaineDeRemplacement=Client.Nom
	gpclWord:RechercherRemplacer("[NOM_PARTICULIER]",sChaineDeRemplacement ) 
 
	// Insertion valeur 5
	sChaineDeRemplacement=Client.Adresse
	gpclWord:RechercherRemplacer("[ADRESSE]",sChaineDeRemplacement ) 
	// Insertion valeur 6
	sChaineDeRemplacement=Client.AdresseSuite
	gpclWord:RechercherRemplacer("[ADRESSE_SUITE]",sChaineDeRemplacement ) 
	// Insertion valeur 7
	sChaineDeRemplacement=Client.CodePostal
	gpclWord:RechercherRemplacer("[CP]",sChaineDeRemplacement ) 
	// Insertion valeur 8
	sChaineDeRemplacement=Client.Ville
	gpclWord:RechercherRemplacer("[VILLE]",sChaineDeRemplacement )
 
	sChaineDeRemplacement=Client.Fax
	gpclWord:RechercherRemplacer("[FAX]",sChaineDeRemplacement ) 
 
	sChaineDeRemplacement=Client.Echeance_rglt
	gpclWord:RechercherRemplacer("[ECH_RGLT]",sChaineDeRemplacement ) 
 
	sChaineDeRemplacement=Client.EMail
	gpclWord:RechercherRemplacer("[EMAIL]",sChaineDeRemplacement ) 
 
	sChaineDeRemplacement=Client.Téléphone1
	gpclWord:RechercherRemplacer("[TELEPHONE]",sChaineDeRemplacement ) 
 
 
 
FIN
 
 
// VALEURS DEVIS
// Insertion valeur 1
 
sChaineDeRemplacement=REQ_Devis_du_groupe.Intitule
gpclWord:RechercherRemplacer("[LIB_FORMATION]",sChaineDeRemplacement ) 
// Insertion valeur 2
sChaineDeRemplacement=REQ_Devis_du_groupe.Annotation
gpclWord:RechercherRemplacer("[LIB_ANNOTATION]",sChaineDeRemplacement ) 
// Insertion valeur 3
sChaineDeRemplacement=DateVersChaîne(REQ_Devis_du_groupe.DateDevis,"JJ/MM/AAAA")
gpclWord:RechercherRemplacer("[LIB_DATE]",sChaineDeRemplacement ) 
// Insertion valeur 4
sChaineDeRemplacement=REQ_Devis_du_groupe.Horaires
gpclWord:RechercherRemplacer("[LIB_HORAIRES]",sChaineDeRemplacement ) 
 
HExécuteRequête(REQ_Journees_du_devis,hRequêteDéfaut,REQ_Devis_du_groupe.IDDevis)
SI HNbEnr(REQ_Journees_du_devis)>0 ALORS
 
	//JOURNEES
	// Insertion valeur 1
	sChaineDeRemplacement="selon détails ci-dessous"
	gpclWord:RechercherRemplacer("[LIB_DATE]",sChaineDeRemplacement ) 
	// Insertion valeur 2
	sChaineDeRemplacement="selon détails ci-dessous"
	gpclWord:RechercherRemplacer("[LIB_HORAIRES]",sChaineDeRemplacement ) 
SINON
	SELON REQ_Devis_du_groupe.Type_duree
 
		CAS 1
			//Jour
			lib_duree=NumériqueVersChaîne(REQ_Devis_du_groupe.Nbre_jour)+" Jour"
		CAS 2
			//Heure
			lib_duree=NumériqueVersChaîne(REQ_Devis_du_groupe.Nbre_jour)+" Heure"
	FIN
 
	SI REQ_Devis_du_groupe.Nbre_jour>1 ALORS
		lib_duree+="s" // équivalent à LIB_DUREE=LIB_DUREE+"s"
	FIN
	// Insertion valeur 3
	sChaineDeRemplacement=lib_duree
	gpclWord:RechercherRemplacer("[LIB_DATE]",sChaineDeRemplacement ) 
	// Insertion valeur 4
	sChaineDeRemplacement=REQ_Devis_du_groupe.Horaires
	gpclWord:RechercherRemplacer("[LIB_HORAIRES]",sChaineDeRemplacement ) 
 
 
 
FIN
 
SI REQ_Devis_du_groupe.Type_jour_pers=Vrai ALORS
 
	// Insertion valeur 
	sChaineDeRemplacement=" /pers."
	gpclWord:RechercherRemplacer("[LIB_COUT_JOUR_OPTION]",sChaineDeRemplacement ) 
 
SINON
 
	// Insertion valeur 
	sChaineDeRemplacement=""
	gpclWord:RechercherRemplacer("[LIB_COUT_JOUR_OPTION]",sChaineDeRemplacement ) 
FIN
 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.tarif_base,"4,2f")
gpclWord:RechercherRemplacer("[TARIF_BASE]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Prix_u_support,"4,2f")
gpclWord:RechercherRemplacer("[TARIF_SUPPORT_U]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Dates_previsionnelles
gpclWord:RechercherRemplacer("[DATES_PREVI]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=DateVersChaîne(REQ_Devis_du_groupe.DateDevis,"JJ/MM/AAAA")
gpclWord:RechercherRemplacer("[DATE_DEVIS]",sChaineDeRemplacement ) 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Frais_dep,"4,2f")
gpclWord:RechercherRemplacer("[FRAIS_DEP]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Frais_hebergement,"4,2f")
gpclWord:RechercherRemplacer("[FRAIS_HEB]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Frais_repas,"4,2f")
gpclWord:RechercherRemplacer("[FRAIS_REPAS]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Frais_total,"4,2f")
gpclWord:RechercherRemplacer("[FRAIS_TOTAUX]",sChaineDeRemplacement ) 
 
 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Indice
gpclWord:RechercherRemplacer("[INDICE]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Libelle_autres_frais
gpclWord:RechercherRemplacer("[AUTRE_FRAIS]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Lieu
gpclWord:RechercherRemplacer("[RUB_LIEU]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Montant_autres_frais,"4,2f")
gpclWord:RechercherRemplacer("[MT_AUTRE_FRAIS]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.montant_remise,"4,2f")
gpclWord:RechercherRemplacer("[MT_REMISE]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Nbre_dep
gpclWord:RechercherRemplacer("[NB_DEP]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Nbre_heberg
gpclWord:RechercherRemplacer("[NB_HEBH]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Nbre_jour
gpclWord:RechercherRemplacer("[NB_JOUR]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Nbre_repas
gpclWord:RechercherRemplacer("[NP_REPAS]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Nbre_stagiaire
gpclWord:RechercherRemplacer("[NB_STAG]",sChaineDeRemplacement ) 
 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Objet_ref
gpclWord:RechercherRemplacer("[REF]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Prix,"4,2f")
gpclWord:RechercherRemplacer("[PRIX_TOTAL]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Prix_u_support,"4,2f")
 
gpclWord:RechercherRemplacer("[PRIX_SUPP]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Proprietaire
gpclWord:RechercherRemplacer("[REDACTEUR]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Quantite_support
gpclWord:RechercherRemplacer("[QTE_SUPP]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Sous_total,"4,2f")
gpclWord:RechercherRemplacer("[S_TOTAL]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Sous_total_remise,"4,2f")
gpclWord:RechercherRemplacer("[S_TOT_REM]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Sous_total_support,"4,2f")
gpclWord:RechercherRemplacer("[S_TOT_SUPP]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=NumériqueVersChaîne(REQ_Devis_du_groupe.Total_TTC,"4,2f")
gpclWord:RechercherRemplacer("[TOT_TTC]",sChaineDeRemplacement ) 
 
// Insertion valeur 
TVACAL est un réel=(REQ_Devis_du_groupe.Total_tva)
sChaineDeRemplacement=NumériqueVersChaîne(TVACAL,"4,2f")
gpclWord:RechercherRemplacer("[TOTAL_TVA]",sChaineDeRemplacement ) 
 
 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Type_duree
gpclWord:RechercherRemplacer("[TYPE_DUREE]",sChaineDeRemplacement ) 
// Insertion valeur 
sChaineDeRemplacement=REQ_Devis_du_groupe.Type_jour_pers
gpclWord:RechercherRemplacer("[TYPE_JOUR_PER]",sChaineDeRemplacement ) 
 
 
SELON REQ_Devis_du_groupe.locaux
	CAS 1
		HLitRecherchePremier(LIEU,IDLIEU,REQ_Devis_du_groupe.IDLIEU)
 
		// Insertion valeur 
		sChaineDeRemplacement=LIEU.LIBLIEU+" dans nos locaux"
		gpclWord:RechercherRemplacer("[LIB_LIEU]",sChaineDeRemplacement ) 
 
 
 
	CAS 2
		// Insertion valeur 
		sChaineDeRemplacement=Client.Adresse+" "+Client.CodePostal+" "+Client.Ville+" dans vos locaux"
		gpclWord:RechercherRemplacer("[LIB_LIEU]",sChaineDeRemplacement ) 
 
	CAS 3
		// Insertion valeur 
		sChaineDeRemplacement=REQ_Devis_du_groupe.Lieu
		gpclWord:RechercherRemplacer("[LIB_LIEU]",sChaineDeRemplacement ) 
 
FIN
// Insertion valeur 
sChaineDeRemplacement=DateVersChaîne(REQ_Devis_du_groupe.date_validite,"JJ/MM/AAAA")
gpclWord:RechercherRemplacer("[DATE_VAL]",sChaineDeRemplacement ) 
 
 
//Enregistrement du document et fermeture de l'objet 
gpclWord:Enregistrer() 
gpclWord:Destructeur()