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.

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
A oui j'utilise VB 2010 et Office 2007 sur mon poste de développement sous W10.