Macro sous word 2007 désignant choix du bac feuille imprimante

Signaler
Messages postés
10
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
20 août 2014
-
Messages postés
10
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
20 août 2014
-
bonjour,

je cherche une solution pour imprimer une enveloppe depuis le réceptacle arrière de mon imprimante et un courrier depuis la cassette mais aussi en désignant l'imprimante qui doit faire l'impression et ce en utilisant une seule macro.

la 1er solution

serait installer 2 fois la même imprimante, chacune ayant par défaut, l'une le bac "réceptacle arrière" et l'autre "la cassette".

mais comment traduire le choix de l'imprimante en code ?

(cette solution ne me conviens pas trop compte tenu que j'ai plusieurs imprimantes déjà installées, doubler leurs installations ca serait un peut le foutoir ensuite pour les autres utilisateurs qui n'ont pas l'habitude)

la 2ème solution

obtenir la désignation du bac à utiliser comme ceci

=-=- Supported Bins -=-=
Bin Name ID
1.Selection Automatique 15
2.Depart Manuel 4
3.Magasin 1 258
4.Magasin 2 257

mais comment obtenir ces infos ? j'ai pu lire sur d'autres forum qui faut utiliser un code API. mais là je sèche j'ai aucune notions.


ensuite il faudrait utiliser ce code

Application.printer.paperbin = ???

en remplaçant les ??? par la référence du bac que l'ont veux définir.

mais là c'est pareils je n'ai aucune indée de la mise en oeuvre , je pense qu'il faudra également désigner l'imprimante concernée car chacune référence les bacs différemment selon les modèles et les marques constructeurs.


avant de poster j'ai fais quelques recherches, et quelques bidouilles mais rien de contrè.

pour obtenir des info j'ai enregistré des macros en faisant des impressions, en choisissant à chaque fois une source différente d'alimentation du papier en automatique, avec la cassette ou le réceptacle arrière, j'obtiens toujours le même code:

Sub Macro1()
'
' Macro1 enregistrée avec impression HP LaserJet P1005 selection soucre de papier automatique
'
'
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
End Sub


je suis sur une version 2007 de word et l'enregistreur ne traduit pas toutes les syntaxes en VBA.

il s'agit seulement des options par défaut liées à l'impression via l'application utilisée et non celles spécifiques à l'imprimante.

maintenant que j'ai créé ces 3 macros je vais insérer le code suivant

Msgbox Prn.BinDefault

pour voir si cela me donne plus d'info sur l'origine du port utilisé.

comment je pourrais obtenir plus d'info ?

je remercie par avance tous ceux qui pourront m'apporter une aide.

2 réponses

Messages postés
10
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
20 août 2014
1
je viens de trouver ceci concernant office2013:

[url]http://msdn.microsoft.com/fr-fr/library/office/ff197339%28v=office.15%29.aspx/url

mais je ne sais pas comment appliquer cela je suis sous Win7 avec word2007.

j'ai déjà essayé de faire un copier collé sous vba de word de la procédure qui utilise la fonction DeviceCapabilities API pour afficher une boîte de message contenant le nom de l'imprimante par défaut et une liste des bacs à papier que pris en charge. mais j'ai une erreur avec

strDevicePort = Application.Printers(strName).Port

en supprimant cette ligne de code la macro se lance mais rien de se passe à l'écran.

pourriez vous m'éclairer sur le sujet ou peut être auriez vous la possibilité de m'orienter vers des infos complémentaires ?
Messages postés
31093
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
342
Messages postés
10
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
20 août 2014
1
okay j'ai jeté un coup d'oeil vite fait, j'étudiais cela demain en rentrant du boulot, je ferais quelques essais et vous tiendrais au courant apparemment cela ne fonctionnerait pas avec toutes les imprimantes.
Messages postés
10
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
20 août 2014
1
en utilisant le code du lien

http://wordribbon.tips.net/T009320_Specifying_a_Paper_Tray_in_a_Macro.html

j'obtiens un erreur avec les dernières lignes

 With ActiveDocument.PageSetup
.FirstPageTray = lngTrayFirst
.OtherPagesTray = lngTrayOther

si je les supprime je n'obtiens rien.

a moins que je n'ai pas compris comment appliquer ce code