Bonjour à tous,
J'ai une application écrite en Excel(2002)/VBA. À partir de cette application, j'imprime un certain nombres de documents en Word, en prenant les données sur mon application Excel et en les transmettant à un signet dans le document Word.
Pour la plupart des documents, le temps d'impression est correct. Par contre, j'en ai un qui met un peu de temps à mon goût. C'est un document qui s'imprime sur 2 pages et qui peut imprimer jusqu'à 20 lignes par page. Une ligne sur Excel s'imprime sur les 2 pages en Word. Il peut prendre jusqu'à 1 minute - 1 minute 15 pour les 2 pages. Comme j'ai 94 lignes à imprimer, cela fait 5 documents de 2 pages à imprimer, ce qui peut prendre entre 5 et 6 minutes et l'application Excel est bloquée, donc mon utilisateur ne peut pas travaillé, il doit attendre que l'impression soit terminée.
Est-ce qu'il y a une façon plus rapide d'imprimer un document Word à partir d'Excel ou bien, est-ce normal?
Voici une partie du code utilisé:
Dans Word, j'ai désactivé les options automatiques (orthographe, grammaire, etc...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Set wdDoc = g_wdAppl.Documents.Open(Filename:=m_strRepertoire_prog & "Forms\" & SCHEDULE_PRINT_FORM & ".doc", _ Revert:=False, Visible:=False, ReadOnly:=True) If ActiveCell.Offset(intOffset, 0).Value <> "" _ And ActiveCell.Offset(intOffset, 0).Row <= Range("fin_99999").Row Then For intLoop = 1 To 20 .FormFields("VehNo" & intLoop).Result = wstBlk.Range("depart").Offset(intOffset, 0).Value .FormFields("VehNo_2_" & intLoop).Result = wstBlk.Range("depart").Offset(intOffset, 0).Value .FormFields("Year" & intLoop).Result = wstBlk.Range("mod_yr").Offset(intOffset, 0).Value .FormFields("Make" & intLoop).Result = wstBlk.Range(NAME_MARQUE).Offset(intOffset, 0).Value .FormFields("Body" & intLoop).Result = wstBlk.Range("body_type").Offset(intOffset, 0).Value .FormFields("Weight" & intLoop).Result = wstBlk.Range("poids_veh").Offset(intOffset, 0).Value .FormFields("CostVeh" & intLoop).Result = IIf(wstBlk.Range("purchase_price").Offset(intOffset, 0).Value = "", _ wstBlk.Range("val_veh").Offset(intOffset, 0).Value, _ wstBlk.Range("purchase_price").Offset(intOffset, 0).Value)
Merci pour votre aide.
Partager