cs_Jaxom
Messages postés29Date d'inscriptionlundi 13 mai 2002StatutMembreDernière intervention22 mars 2013
-
2 mars 2009 à 15:04
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
10 mars 2009 à 12:53
Bonjour,
j'ai fit un applicatif qui crée des bons de commande sous excel.
A la fin du traitement je fais
for each xlsheet as excel.worksheet in xlBook.worksheets
xlsheet.PrintOut(, ,
CInt(Exemplaires))
next
Mon problème est que parfois à l'impression, les feuilles sortent mélangées
La boucle fonctionnerait-elle trop vite pour le spooler (en réseau)?
Quelqu'un a-t-il déjà eu ce genre de problème?
Si oui, y-a-t-il un moyen d'imposer à mon for d'attendre la fin de l'impression avant de lancer la suivante?
Merci d'avance.
-Perdu dans les méandres de la création virtuelle-
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 2 mars 2009 à 19:13
Bonjour,
En principe, le spooler réceptionne les fichiers à imprimer dans l'ordre auquel on lui envoit... Et les renvoient dans le même ordre... Donc la question ne serait-elle pas plutôt, est-ce que Excel liste les feuillles que tu veux imprimer dans l'ordre que tu veux ?
Normalement, c'est l'ordre des onglets qui prime... sinon je ne vois pas.
Exemple de code d'illstration :
Sub es()
Dim Feuille As Worksheet
For Each Feuille In ActiveWorkbook.Worksheets
MsgBox Feuille.Name
Feuille.PrintPreview
Next
End Sub
La question que je me pose est la suivante: Sommes-nous bien sûr qu'il va attendre que l'impression de Feuil1soit bien terminée (finalisée et envoyée en entier au spooler) avant de passer à la suivante OU se peut-il qu'il lance la Feuil2 avant que la 1 soit finie et que par accumulation de petits retard il en arrive à imprimer par exemple Feuil7 avant Feuil6 (car le retard accumulé par les précédentes excederait la durée complète d'impression de la Feuil6)?
On arriverait en pratique
Ex: 5 Sec de traitement par feuille et 6 secondes de réception par la spooler
Feuil1 (1 sec de retard)
Feuil2 (2 sec de retard)
Feuil3 (3 sec de retard)
Feuil4 (4 sec de retard)
Feuil5 (5 sec de retard)
Feuil7 (6 sec de retard)
Feuil6 (7 sec de retard)
etc...
Ne suis-je pas trop confus? est-ce possible ou suis-je fou ? Que de questions et merci pour les réponses
-Perdu dans les méandres de la création virtuelle-
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 3 mars 2009 à 12:59
Salut,
en supposant que tu ais raison, il existe un moyen de verifié que le la memoire alouée au spooler n'est pas pleinne. Il existe plusieurs API windows qui te permetrait de le verifier.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 3 mars 2009 à 16:30
Bonjour,
"En fait, dans la boucle, si je ne m'abuse il va donc traiter les infos comme suit:
Feuil1 print
Feuil2 print
Feuil3 print
Feuil4 print"
NON. L'ordre dépend du rangement des onglets, et non de la création des feuilles ou autres paramètres... uniquement de l'ordre dans lesquelles elles sont au moment de l'impression. Prends un exemple simple, avec 3 feuilles, avec le code que je propose. Si tu déplaces un onglet (par exemple, la feuille3, en deuxième position) et relance le code, tu pourra constater ce que je dis. Donc le désordre que tu as ne viendrait-il pas de là ?... C'est le sens de ma remarque.
Amicalement,
Us.
Vous n’avez pas trouvé la réponse que vous recherchez ?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 10 mars 2009 à 12:53
Bonjour,
Bien. Là, je crois que je suis un peu dépassé.
En ce qui concerne Excel, il n'y a pas, à ma connaissance de moyen de savoir si l'impression est finie ou pas. Du moins directement par Excel... En effet, Excel (comme tout logiciel) envoit les impressions et s'en lave les mains ensuite... Il faudrait alors chercher un moyen d'interroger la file d'impression plutôt (pouvant être fait à partir de VBA)... Cela est surement possible, mais bon, comment ?... je ne sais pas trop (peut-être avec une API...)...
Un remarque tout même, puisqu'il s'agit de réseau, il n'y aurait-il pas un réglage possible pour l'imprimante pour lui dire qu'elle imprime les fichiers en attente dans la file les uns à la suite des autres... Il me semble que cela est faisable... En gros, il me semble qu'il y a des paramètres de réglage pour définir les impressions en prioritaire ou pas... et dans ce cas là, il ne faudrait pas de ce genre de chose... Enfin, tout cela pour dire, qu'un simple réglage doit être possible... car normalement, ce que tu observes est également vrai si les envois d'impression se font par d'autres logiciels... Ce n'est pas propre à Excel à priori.