Impression de plusieurs fichiers dans l'ordre

Fermé
fanch_22 Messages postés 1 Date d'inscription vendredi 19 décembre 2014 Statut Membre Dernière intervention 19 décembre 2014 - 19 déc. 2014 à 16:50
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 - 8 janv. 2015 à 22:16
Bonjour,

Voila mon problème.

J'ai plus de 1500 fichiers Outlook à imprimer dans l'ordre chronologique. J'ai dû les extraire de Outlook pour les copier dans un dossier sur clé USB. Et c'est à partir de ce dossier qu'il faut que je lance l'impression en sélectionnant tout afin de récupérer toutes les pages en tas à la sortie de l'imprimante dans l'ordre chronologique.

Le problème c'est que lorsque que je lance l'impression, les pages sortent dans un ordre aléatoire. J'ai eu beau classer en "détails" sous windows puis par date de création (lors du transfert de Outlook au dossier, l'ordre chronologique des emails à été gardé même si la date et l'heure correspondent au copier/coller et non pas à la réalité). Cela n'influe pas sur la sortie de l'imprimante. J'ai essayé avec une autre imprimante et c'est la même chose.

Je ne comprend pas l'ordre des pages qui sort de l'imprimante, il ne s'agit pas de l'ordre alphabétique, ni de la taille des fichiers...

quelqu'un aurai-t-il une solution ???

Merci pour vos réponses
A voir également:

1 réponse

pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 198
7 janv. 2015 à 21:21
Bonjour,

Je vous propose la solution suivante, qui peut être adaptée pour tout besoin du même genre, à savoir :
Imprimer une série de fichiers de même type (pris en charge par la même application) et dans un ordre spécifique.
Cette solution est valable pour tout type de fichier dont l'application permet le lancement de l'impression par ligne de commande. Dans votre cas il s'agit de MS Outlook. Comme vous n'avez spécifié ni votre système d'exploitation (MAC, Windows, Linux, ...) ni sa version, ni la version de Outlook, la solution ci-dessous est valable pour Windows 64bit 7 ou 8 et MS Outlook 2010 (MS Office 14). Cela devrait fonctionner pour des fichiers .msg exportés depuis Outlook.

La particularité du problème est d'assurer l'ordre d'impression des fichiers. Comme vous l'avez constaté, le fait de sélectionner une série de fichiers dans l'explorateur Windows puis d'en commander l'impression, ne garantit pas l'ordre de traitement. Il s'agit donc de passer les fichiers un à un à l'application, et d'automatiser le processus.

Pour ce faire, nous allons créer deux fichiers, l'un qui contiendra la liste des fichiers, dans l'ordre souhaité ; l'autre contiendra un petit programme.

Préparation de la liste de fichiers.
Préparez un dossier qui contient tous les fichiers à imprimer, et aucun autre. Pour simplifier les manips par la suite, je vous conseille de positionner ce dossier à la rracine du disque (ou clé USB) et de lui donner un nom court et sans espace. Je prends comme exemple le dossier "F:\messages". Il sera aussi plus simple si les noms des fichiers sont sans espace.
Le fichier sera de type texte simple et contiendra un nom de fichier par ligne. Pour le créer, on va ouvrir une fenêtre ligne de commande Windows, puis utiliser une commande qui écrira la liste des fichiers automatiquement.
- appuyez sur les touches [Windows] et [R]
- dans la boîte de dialogue Exécuter", tapez "cmd" sans les guillemets puis touche [Entrée]
- Windows vous affiche une invite de commande.
Tapez "
F:
" sans les guillemets puis touche [Entrée] (vous indiquerez la lettre de votre disque USB si différente).
Tapez "
cd \messages
" sans les guillemets puis touche [Entrée] (vous indiquerez le chemin de votre dossier si différent).
- tapez
dir /B *.msg > listemsg.txt
puis touche [Entrée]
- Windows créera dans ce même dossier un fichier listemsg.txt qui contient la liste de tous les fichiers .msg par ordre alphabétique. Si vous avez besoin d'un ordre différent, reprenez ce fichier avec un outil que vous maîtrisez.

Identification de votre imprimante.
Nous aurons besoin du nom de votre imprimante. Ouvrez la liste des imprimantes, faites un clic droit sur l'imprimante que vous souhaitez utiliser, choisissez Propriétés et notez scrupuleusement le nom de l'imprimante. Vous pourrez revenir ici le moment venu et le copier - coller.

Préparation du fichier programme
Laissez la fenêtre de ligne de commande ouverte, et lancez le bloc-notes. Par exemple, appuyez sur les touches [Windows] et [R] puis tapez notepad puis validez.
Dans ce nouveau fichier texte, copiez-collez les 12 lignes de texte/code suivant :

@echo off
:debut
FOR /F "delims=," %%i IN (listemsg.txt) DO (
"c:\program files (x86)\microsoft office\office14\outlook.exe" /p "F:\messages\%%i" lenomdevotreimprimante
if errorlevel 0 (
echo %%i est en cours d'impression.
timeout /T 4 >nul
) ELSE (
echo Un problème s'est produit pendant l'impression de %%i.
)
)
echo Fin de l'impression des messages.


Attention ce qui est affiché lignes 4 et 5 ci-dessus ne doit en fait former qu'une seule ligne. Je la compte comme une seule ligne dans mes remarques ci-dessous.

Corrigez ligne 3 le nom de fichier listemsg.txt si vous avez utilisé un autre nom.
Corrigez ligne 4 le nom de dossier F:\messages si le dossier n'a pas ce chemin. Attention, ne touchez qu'au chemin du dossier (par exemple laissez les guillemets, le \ qui suit etc.)
Remplacez obligatoirement ligne 4 la mention lenomdevotreimprimante par le nom de votre imprimante. Si le nom comporte des espaces, entourez-le de guillemets.
Enregistrez ce nouveau fichier que vous êtes en train d'élaborer dans le même dossier F:\messages ou celui que vous utilisez, sous le nom impmsg.cmd

Essais et Modifications
Je vous conseille de faire un essai avec une copie du fichier de liste qui ne fait que 3 lignes (trois messages à imprimer).
Par ailleurs, vous aurez peut-être besoin d'ajuster :
- la ligne 4 du programme si Outlook n'est pas installé à cet endroit (autre version, Windows XP, ...). Cette ligne doit commencer par le chemin complet de l'exécutable entre guillemets.
- la ligne 7 contient une instruction qui donne à Outlook le temps de prendre en charge la commande, avant de lui balancer le fichier suivant. J'ai mis la valeur 4 (c'est des secondes) mais si vous constatez que les messages ne sont pas imprimés dans l'ordre il faudra l'augmenter.

Pour lancer l'impression
Retournez dans la boîte de commande Windows. Vérifiez que l'invite de commande est formé par le chemin du dossier F:\messages> ou le chemin de votre dossier.
Tapez impmsg puis touche [Entrée]. impmsg est le nom de votre fichier programme.

Bonne chance.

Pour les utilisateurs avancés:
Pour s'en servir pour d'autres types de fichiers dont l'impression par ligne de commande est prise en charge il suffit de récupérer les infos sur la commande et les options.
Par exemple pour la version 11 d'Adobe Reader pour imprimer un lot de pdfs on mettrait en ligne 4:
"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /h /t "F:\messages\%%i" lenomdevotreimprimante

La valeur du timeout doit être supérieur au temps entre l'exécution de la ligne 4 et la réponse obtenue par errorlevel. La réponse errorlevel n'est pas émise à la fin de chaque impression (en tout cas par AcroRd32), elle est donnée au début, dès que le fichier a été lu. Sans timeout, windows n'attend pas et balance tout les yeux fermés, et le résultat c'est que l'application serveur va plutôt traiter le dernier fichier en premier, ou comme il peut... et on peut s'attendre à des problèmes de mémoire. Le timeout permet de réguler le flux et de garantir l'ordre.
-1
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 198
7 janv. 2015 à 23:06
IMPORTANT - un petit oubli : avant de lancer la commande impmsg, lancez Outlook si l'application ne tourne pas déjà (puis le mettre de côté, réduire par exemple), sinon le script sera bloqué après l'impression de chaque fichier (windows attendra la fermeture de l'instance de Outlook qui aura été lancée).
0
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 198 > pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024
Modifié par pcturbo le 8/01/2015 à 22:20
Désolé, 2 corrections.

1° : ignorez mon deuxième message, il n'est pas nécessaire de lancer Outlook au préalable. En revanche si on utilise la technique avec Adobe Reader, là c'est nécessaire.

2° : dans le programme, ligne 4, ignorez le dernier paramètre "lenomdevotreimprimante". Outlook ne le gère pas (c'est un paramètre valable pour Adobe Reader). Outlook envoie sur l'imprimante par défaut. Il convient donc de définir l'imprimante à utiliser comme imprimante par défaut avant de lancer l'impression.

Le code du programme est donc:

@echo off
:debut
FOR /F "delims=," %%i IN (listemsg.txt) DO (
"c:\program files (x86)\microsoft office\office14\outlook.exe" /p "F:\messages\%%i"
if errorlevel 0 (
echo %%i est en cours d'impression.
timeout /T 4 >nul
) ELSE (
echo Un problème s'est produit pendant l'impression de %%i.
)
)
echo Fin de l'impression des messages.
-1