VBA word imprimer avant fin de la macro [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 13 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
-
koneeric
Messages postés
4
Date d'inscription
jeudi 13 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
-
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.

Merci d'avance

Eric

3 réponses

Messages postés
84
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
25 juillet 2008

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  ).
Messages postés
84
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
25 juillet 2008

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
Messages postés
4
Date d'inscription
jeudi 13 septembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007

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.