koneeric
Messages postés4Date d'inscriptionjeudi 13 septembre 2007StatutMembreDernière intervention13 décembre 2007
-
13 déc. 2007 à 00:11
koneeric
Messages postés4Date d'inscriptionjeudi 13 septembre 2007StatutMembreDernière intervention13 décembre 2007
-
13 déc. 2007 à 08:09
Bonjour à tous,
J'ai un problème très handicapant en VBA Word.
Voici un bout de code qui le résume:
Sub Macro1()
For i = 1 To 10
ActiveDocument.PrintOut
Next
Do
DoEvents
Loop
End Sub
Pour faire l'exercice vous pouvez imprimer dans Microsoft Office Document Image Writer ou dans PDF creator. L'impriante importe peu.
Le problème est que tant que je n'arrète pas la macro manuellement (escape ou arret) le document ne s'imprime pas (ou alors très longtemps après) alors qu'il est bien (10 fois ici) dans la file d'attente.
Comment faire pour qu'il s'imprime tout de suite et donc avant la fin de la macro?
NB: Dans la réalité j'ai en moyenne 300 a 400 fichiers différents à imprimer et du coup ca bloque.
cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 20081 13 déc. 2007 à 01:03
google est bien plus fort :
http://www.vbfrance.com/infomsg_IMPOSER-DELAI-ATTENTE-LORS-IMPRESSION-WORD_50948.aspx expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)
Background Argument de type Variant facultatif. Affectez-lui la valeur True pour que l'exécution de la macro se poursuive pendant l'impression du document dans Microsoft Word.
Et donc avec False,
le programme attend que l'impression ait bien été prise en compte avant
de passer à l'instruction suivante ( l'execution en est ralentie mais
l'impression ne nécessite pas une confirmation, ex msgbox, permettant
de lancer 100 impressions à la suite sans devoir cliquer 100 fois sur
un bouton ).
cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 20081 13 déc. 2007 à 01:01
c'est taré,
j'ai bien constat"é le pb
avec ca :
Sub Macro1()
Dim i As Integer
For i = 1 To 10
ActiveDocument.PrintOut
MsgBox ("Impression en cours..."), vbOKOnly
DoEvents
Next
' Do
' Sleep 100
'
' Loop
End Sub
ca marche
en gros, ya une sorte d'interruption qui se fait pas avec doevents, que seule un vrai arret du prg VBA peut provoquer
pour pas avoir à cliquer 10 fois, essaies avec une msgbox temporisée qui se referme automatiquement
koneeric
Messages postés4Date d'inscriptionjeudi 13 septembre 2007StatutMembreDernière intervention13 décembre 2007 13 déc. 2007 à 08:09
C'est méchamment bon cette histoire de background. Dire que j'avais bien lu la msdn... et que j'ai perdu 1 jour de boulot. En tout cas merci beaucoup! Ca fonctionne sur ce bout de code donc je pense que ca va fonctionner sur mon appli.