Bonjour tout le monde,
Je vais essayer d'expliquer tout ça clairement.
J'ai développe une application dont l'une des fonctions est d'imprimer une fiche récap par personne pour une liste de personnes données.
J'ouvre donc Excel je rempli un tableau avec le récap des infos de la personne.
J'ouvre un fichier Word (pré rempli, avec des infos légales) et je copie dedans le tableau Excel.
ça fonctionne très bien sauf que quand je lance des listes de personnes, le copier/coller du tableau plante de temps en temps
Sur une même liste de 20 personnes parfois tout se passe bien parfois ça plante 3 fois et jamais sur la même fiche.
J'ai un message d'erreur sur le "paste" disant que le presse papier n'est pas défini.
quand je continue en "pas à pas" et que je reviens sur l'instruction "paste" tout se passe bien.
si quelqu'un a une piste.
A oui j'utilise VB 2010 et Office 2007 sur mon poste de développement sous W10.
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 Dim Doc_wrd, Imp_xls As Object 'ouvre le fichier excel des tableaux Imp_xls = CreateObject("Excel.Application") Imp_xls.Visible = True Imp_xls.Workbooks.open("Chemin/Fichier.xls") Imp_xls.ActiveWorkbook.SaveAs(My.Settings.ChemRepDataAppli & "\ProvisAdh") 'enregistre le fichier modéle en provis pour ne pas l'écraser Imp_xls.ActiveWorkbook.Sheets("Adherent").select() AdhXls_cpt = 2 'Lecture en base de données des infos relatives à la personne et création du tableau des infos dans excel 'impression de avec word Doc_wrd = CreateObject("Word.Application") Doc_wrd.Visible = True Doc_wrd.Documents.Open("Chemin/Fichier.doc") Dim Provis_str As String = My.Settings.ChemRepDataAppli & "\ProvisAdh" Doc_wrd.Application.ActiveDocument.SaveAs(Provis_str) 'enregistre le fichier modéle en provis pour ne pas l'écraser DateImp_str = Format(Now, "dd/MM/yyyy") 'remplace les balises dans le corp de texte 'recherche la le mot TableauAdherent dans pour le remplacer par le tableau Excel Dim Parag As Object For Each Parag In Doc_wrd.Application.ActiveDocument.Paragraphs Parag.Range.Select() If Doc_wrd.Application.Selection.Words(1).text = "TableauAdherent" Then Doc_wrd.Application.ActiveDocument.Content.Find.Execute(FindText:="TableauAdherent", ReplaceWith:="", Replace:=2) '---------------------------------------------------------------------------------------- 'copie le tableau excel et le cole dans le doc word Imp_xls.ActiveWorkbook.sheets("Adherent").Range("A1:N" & AdhXls_cpt).copy() Doc_wrd.Application.Selection.Paste() '---------------------------------------------------------------------------------------- Dim wdAutoFitWindow As Integer = 2 Doc_wrd.Application.ActiveDocument.Tables(1).AutoFitBehavior(wdAutoFitWindow) End If Next 'imprime le doc et ferme word Doc_wrd.ActivePrinter = "Imprimante sélectionnée" Doc_wrd.PrintOut() Doc_wrd.Application.ActiveDocument.save() Doc_wrd.Application.ActiveDocument.Close(0) Doc_wrd.Application.Quit() Doc_wrd = Nothing Imp_xls.activeworkbook.save() Imp_xls.Application.quit() Imp_xls = Nothing
Partager