Si vous utilisez des macros pour imprimer des documents, vous savez déjà que la macro peut spécifier l’imprimante réelle à laquelle la sortie doit être envoyée. Que faire si vous souhaitez également spécifier un bac à papier spécifique à utiliser sur cette imprimante? Malheureusement, cela devient un peu un guichet collant dans Word. Une brève visite et une explication aideront à clarifier pourquoi c’est le cas.

Le bac à papier utilisé par Word dépend d’un certain nombre de facteurs, dont certains ne sont pas sous le contrôle de Word lui-même. Par exemple, tenez compte des éléments suivants, dont certains dépendent de la version de Word que vous utilisez.

  • Si vous affichez la boîte de dialogue Options Word et cliquez sur Avancé, dans le groupe Imprimer, vous pouvez spécifier un bac par défaut.

  • Si vous affichez l’onglet Mise en page du ruban, puis cliquez sur l’icône en bas à droite du groupe Mise en page, vous verrez la boîte de dialogue Mise en page. Dans l’onglet Source papier, vous pouvez spécifier le magasin papier à utiliser pour la première page et celui à utiliser pour les pages suivantes.

Si vous appuyez sur Ctrl + P * pour imprimer, puis cliquez sur Propriétés, vous pouvez souvent (selon votre imprimante) fouiller et sélectionner un bac à papier.

Par conséquent, Word a deux emplacements où vous pouvez spécifier des bacs à papier et votre imprimante peut avoir son propre emplacement pour définir un bac à papier à utiliser. Cette zone de configuration finale (via le bouton Propriétés) est au-delà de la «portée» de VBA – la boîte de dialogue affiche les paramètres dans le pilote d’imprimante, pas dans Word lui-même.

Pour aggraver les choses, il n’y a aucune explication claire disponible concernant les paramètres qui ont la priorité dans un travail d’impression donné. Les paramètres de la boîte de dialogue Mise en page remplacent le paramètre du pilote d’imprimante? Le paramètre du pilote d’imprimante remplace-t-il le paramètre de la boîte de dialogue Options Word? Quel est le lien entre le paramètre de la boîte de dialogue Options Word et les paramètres de mise en page? Vous avez eu l’idée; une multitude de paramètres, combinée aux caprices des différents paramètres du pilote d’imprimante et des capacités de l’imprimante, peut prêter à confusion; ce qui peut fonctionner dans un mélange de conditions peut ne pas fonctionner dans un autre.

Cela étant dit, il existe plusieurs approches que vous pouvez essayer afin de contrôler la sélection du bac papier via une macro. Il est important de garder à l’esprit que votre macro peut spécifier des paramètres dans la boîte de dialogue Options Word, ainsi que dans la boîte de dialogue Mise en page. Votre macro ne peut cependant pas spécifier de paramètres accessibles via le bouton Propriétés de la boîte de dialogue Imprimer. (Plus à ce sujet dans un instant.)

Si vous souhaitez définir les paramètres du plateau de mise en page, vous pouvez le faire en utilisant une macro similaire à la suivante:

Sub CustomPageSetup()

Dim strTrayFirst As String     Dim strTrayOther As String     Dim lngTrayFirst As Long     Dim lngTrayOther As Long

'Other setup code goes here

strTrayFirst = System.PrivateProfileString(strIniFile, _       "Printer Trays", "Letter First")

If strTrayFirst <> "" Then         Select Case strTrayFirst             Case "Automatic Sheet Feed"

lngTrayFirst = wdPrinterAutomaticSheetFeed             Case "Default Bin"

lngTrayFirst = wdPrinterDefaultBin             Case "Large Capacity Bin"

lngTrayFirst = wdPrinterLargeCapacityBin             Case "Large Format Bin"

lngTrayFirst = wdPrinterLargeFormatBin             Case "Lower Bin"

lngTrayFirst = wdPrinterLowerBin             Case "Manual Feed"

lngTrayFirst = wdPrinterManualFeed             Case "Middle Bin"

lngTrayFirst = wdPrinterMiddleBin             Case "Upper Bin"

lngTrayFirst = wdPrinterUpperBin             Case Else                 lngTrayFirst = wdPrinterLowerBin         End Select     End If

strTrayOther = System.PrivateProfileString(strIniFile, _       "Printer Trays", "Letter Other")

If strTrayOther <> "" Then         Select Case strTrayOther             Case "Automatic Sheet Feed"

lngTrayOther = wdPrinterAutomaticSheetFeed             Case "Default Bin"

lngTrayFirst = wdPrinterDefaultBin             Case "Large Capacity Bin"

lngTrayOther = wdPrinterLargeCapacityBin             Case "Large Format Bin"

lngTrayOther = wdPrinterLargeFormatBin             Case "Lower Bin"

lngTrayOther = wdPrinterLowerBin             Case "Manual Feed"

lngTrayOther = wdPrinterManualFeed             Case "Middle Bin"

lngTrayOther = wdPrinterMiddleBin             Case "Upper Bin"

lngTrayOther = wdPrinterUpperBin             Case Else                 lngTrayOther = wdPrinterUpperBin         End Select     End If     With ActiveDocument.PageSetup         .FirstPageTray = lngTrayFirst         .OtherPagesTray = lngTrayOther     End With End Sub

Cette macro, malgré sa longueur, ne définit que deux paramètres: le paramètre Première page et le paramètre Autres pages sous l’onglet Source de papier de la boîte de dialogue Mise en page. La macro n’est pas non plus complète, mais seulement un exemple de la façon dont le « réglage » réel pourrait être effectué dans votre propre macro. Ce code particulier lit deux paramètres à partir d’un fichier INI (le nom de fichier est spécifié dans la chaîne strIniFile), puis définit les paramètres en fonction des valeurs récupérées. Vous devrez, évidemment, fournir le nom du fichier INI que vous souhaitez utiliser, ainsi que vous assurer qu’il a été configuré pour contenir les informations appropriées dans le format approprié. (La configuration des fichiers INI dépasse le cadre de cette astuce, mais de nombreuses informations sont disponibles sur le sujet ailleurs.) Une fois les paramètres lus à partir du fichier INI, ils sont traduits en paramètres que Word peut comprendre, puis dans la version finale …​ Fin Avec la structure, les modifications de la boîte de dialogue sont effectuées.

Pour les raisons mentionnées précédemment, l’approche illustrée dans cette macro peut ne pas fonctionner dans toutes les situations. Si ce n’est pas le cas, vous ne pourrez peut-être pas contrôler les bacs à papier utilisés par votre imprimante, au moins à partir d’une macro. N’oubliez pas que les bacs à papier définis via le bouton Propriétés sont en fait sous le contrôle de votre pilote d’imprimante et que les paramètres du pilote d’imprimante ne sont pas «visibles» par VBA. Une solution potentielle dans cette situation consiste simplement à configurer différents pilotes d’imprimante. Suivez ces étapes générales:

  1. Déterminez le nombre de bacs à papier que vous souhaitez utiliser sur l’imprimante.

  2. Définissez une nouvelle imprimante dans Windows pour chaque bac à papier que vous souhaitez utiliser.

Par exemple, si vous souhaitez utiliser trois magasins papier différents, vous définirez trois imprimantes, chacune avec un nom représentatif d’un magasin papier.

  1. Cliquez avec le bouton droit sur une définition d’imprimante et modifiez les propriétés de l’imprimante afin qu’elle imprime dans le bac à papier souhaité.

  2. Répétez l’étape 3 pour chacune des autres définitions d’imprimante, en veillant à spécifier des magasins papier différents pour chacun.

À ce stade, plusieurs définitions d’imprimante sont configurées et chacune imprimera dans un bac à papier différent sur la même imprimante. Vous pouvez maintenant spécifier l’imprimante souhaitée, dans une macro, afin que l’impression soit acheminée vers le magasin papier souhaité. Le seul inconvénient de cette solution, bien sûr, est qu’elle nécessite un peu de travail de configuration. Si vous travaillez dans un bureau avec 50 utilisateurs, cela signifie que vous devrez vous assurer que les 50 ont chaque imprimante définie comme décrit ci-dessus.

N’oubliez pas que le bac à papier à utiliser par Word peut être spécifié par l’utilisateur via la sélection d’un ou plusieurs paramètres dans diverses boîtes de dialogue, comme indiqué au début de cette astuce. Pour cette raison, certaines personnes ont réussi à utiliser l’instruction SendKeys pour émuler les pressions de touches qu’un utilisateur utiliserait pour spécifier un bac à papier. (Vous pouvez trouver des informations sur SendKeys dans l’aide en ligne de VBA disponible avec Word.)

Ce que fait SendKeys est de bourrer le tampon du clavier avec une série d’appuis sur les touches, comme ils seraient tapés par l’utilisateur. Cependant, il existe un problème potentiel avec SendKeys. Cela peut être peu fiable car il n’y a aucun moyen de garantir que les frappes vont réellement là où vous le souhaitez. Sur un système d’exploitation multithread (comme Windows), un autre processus pourrait intervenir et faire dérailler les commandes.

L’essentiel est que, malheureusement, il n’y a pas de « taille unique »

solution pour sélectionner un magasin papier à l’aide d’une macro. Une solution qui fonctionne pour une personne peut ne pas fonctionner pour une autre. Pour cette raison, vous devrez expérimenter pour voir quelle solution fonctionnera le mieux pour vous, mais ne vous attendez pas à ce qu’elle fonctionne pour tout le monde.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (9320) s’applique à Microsoft Word 2007, 2010, 2013 et 2016. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu de Word ici:

link: / word-Specifying_a_Paper_Tray_in_a_Macro [Spécification d’un magasin papier dans une macro].