Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Choix du tiroir avant impression

8 réponses
Avatar
Manu
Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu

8 réponses

Avatar
Mgr T. Banni
bonsoir manu
je crois qu'il te faut ajouter autant d'imprimantes que de tiroirs en les
paramétrant pour que ta feuille sorte dans les uns ou dans les autres
et ensuite en VBA, il faudra que tu dises pour chaque feuille :

Application.ActivePrinter = "Toto sur LTP1:" 'ou Tata ou Titi ou Tutu

HTH
Mgr T.B.
PS si Toto est l'imprimante par défaut, pense à la remettre avant le End Sub

"Manu" a écrit dans le message de news:
%
Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au tiroir
2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger l'impression
de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu


Avatar
dunkelzahn
Bonjour,

J'ai récupéré sur internet un morceau de code permettant de récup érer
les noms des bacs et de pouvoir ensuite les afficher via une fenêtre
pour en choisir la bonne. Après quelques modifications et surtout si
tu connais sa référence exacte et que tu ne changes jamais
d'imprimante, tu pourras le mettre en obligatoire. Personnellement,
j'étais obligé de passer par une interface.

Voici le code que j'ai modifié un petit peu puisque j'utilise
PDFcreator qui n'a pas de bac par défaut (ce qui n'était pas prévu
dans le code d'origine) :
'Fonction retourne le nombre de bacs (vBins) disponibles dans
l'imprimante
'Si l'imprimante a 0 bac (PDFCreator par exemple) la fonction retourne
-1

Option Explicit

Private Const DC_BINS = 6
Private Const DC_BINNAMES = 12

Private Declare Function DeviceCapabilities Lib "winspool.drv" _
Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, _
ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, _
ByVal dev As Long) As Long

Public Function GetBinNames() As Variant
'Code adapted from Microsoft KB article Q194789
'HOWTO: Determine Available PaperBins with DeviceCapabilities API

Dim iBins As Long
Dim ct As Long
Dim sNamesList As String
Dim sNextString As String
Dim sPort As String
Dim sCurrentPrinter As String
Dim vBins As Variant

'Get the printer & port name of the current printer
sPort = Trim$(Mid$(ActivePrinter, InStrRev(ActivePrinter, " ") +
1))
sCurrentPrinter = Trim$(Left$(ActivePrinter, InStr(ActivePrinter,
" sur ")))

'Find out how many printer bins there are
iBins = DeviceCapabilities(sCurrentPrinter, sPort, DC_BINS, ByVal
vbNullString, 0)

'Set the string to the right size to hold all the bin names
'24 chars per name
sNamesList = String(24 * iBins, 0)

'Load the string with the bin names
iBins = DeviceCapabilities(sCurrentPrinter, sPort, DC_BINNAMES,
ByVal sNamesList, 0)

If iBins <> 0 Then
'Set the array of bin names to the right size
ReDim vBins(0 To iBins - 1)
For ct = 0 To iBins - 1
'Get each bin name in turn and assign to the next item in
the array
sNextString = Mid(sNamesList, 24 * ct + 1, 24)
vBins(ct) = Left(sNextString, InStr(1, sNextString, Chr
(0)) - 1)
Next ct

'Return the array to the calling routine
Else
ReDim vBins(0 To 0)
vBins(0) = -1
End If
GetBinNames = vBins
End Function
Public Function GetBinNumbers() As Variant
'Code adapted from Microsoft KB article Q194789
'HOWTO: Determine Available PaperBins with DeviceCapabilities API
Dim iBins As Long
Dim iBinArray() As Integer
Dim sPort As String
Dim sCurrentPrinter As String

'Get the printer & port name of the current printer
sPort = Trim$(Mid$(ActivePrinter, InStrRev(ActivePrinter, " ") +
1))
sCurrentPrinter = Trim$(Left$(ActivePrinter, InStr(ActivePrinter,
" sur ")))

'Find out how many printer bins there are
iBins = DeviceCapabilities(sCurrentPrinter, sPort, DC_BINS, ByVal
vbNullString, 0)

'Set the array of bin numbers to the right size
ReDim iBinArray(0 To iBins - 1)

'Load the array with the bin numbers
iBins = DeviceCapabilities(sCurrentPrinter, sPort, DC_BINS,
iBinArray(0), 0)

'Return the array to the calling routine
GetBinNumbers = iBinArray
End Function

Origine du code : http://pubs.logicalexpressions.com/pub0009/lpmarticle.asp ?id1

On 20 avr, 22:22, "Mgr T. Banni" wrote:
bonsoir manu
je crois qu'il te faut ajouter autant d'imprimantes que de tiroirs en les
paramétrant pour que ta feuille sorte dans les uns ou dans les autres
et ensuite en VBA, il faudra que tu dises pour chaque feuille :

Application.ActivePrinter = "Toto sur LTP1:" 'ou Tata ou Titi ou Tutu

HTH
Mgr T.B.
PS si Toto est l'imprimante par défaut, pense à la remettre avant le End Sub

"Manu" a écrit dans le message de news:
%



> Bonsoir à tous,

> Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
> Certaines feuilles doivent être rattachés au tiroir 1, d'autres au tiroir
> 2, etc...

> Ma question est la suivante : Comment peut-on, en VB, obliger l'impress ion
> de la feuille 1 à partir du tiroir (bac) 1, etc... ?

> Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
> celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1 ,
> ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
> véritablement pour le réchauffement de la planète, la solution à mon
> problème serait la bienvenue.

> Merci à celles ou ceux qui pourront m'aider.

> Manu- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
Laurent
Bonjour,
J'ai fait un rapide test sur mon poste, et sans passer par macro les bacs
sont bien enrégistré sur le document.
Je m'explique : sur une feuille, je change le bac, sur une seconde feuille,
j'indique un autre bac et sur une troisième un autre bac.
J'enregistre mon document.
A la réouverture, je choisis l'imprimante qui va bien (l'imprimante avec les
bacs n'est pas mon imprimante par défaut), pour chaque feuille, il retrouve
les bons bacs (je n'ai pas lancé l'imprimante, j'ai juste vérifié les
paramètres).

Laurent

"Manu" a écrit :

Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu



Avatar
Mgr T. Banni
bien vu, laurent
ce conseil mérite sa place chez la Misange, à moinsse qu'on ne l'y trouve
déjà....
merci en tous cas
Mgr T.B.

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai fait un rapide test sur mon poste, et sans passer par macro les bacs
sont bien enrégistré sur le document.
Je m'explique : sur une feuille, je change le bac, sur une seconde
feuille,
j'indique un autre bac et sur une troisième un autre bac.
J'enregistre mon document.
A la réouverture, je choisis l'imprimante qui va bien (l'imprimante avec
les
bacs n'est pas mon imprimante par défaut), pour chaque feuille, il
retrouve
les bons bacs (je n'ai pas lancé l'imprimante, j'ai juste vérifié les
paramètres).

Laurent

"Manu" a écrit :

Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu





Avatar
Mgr T. Banni
ah! mais c'est que je n'ai qu'un bac, moi aussi....j'ai largement échoué au
second :-)
et puis je n'ai rien compris à la Function de dunzelkahn
allez en paix, comme dit mon honorable frère Abile
Mgr T.B.

"MichDenis" a écrit dans le message de news:

Bonjour Mgr,

Une petite remarque en passant.

La procédure originale fait référence à l'application Word et non Excel.

Dans Word, on retrouve la propriété "OtherPagesTray" inexistante dans
excel
La ligne de code suivante s'adresse au vba word et non vba excel.
ActiveDocument.PageSetup.OtherPagesTray = _
vBinNumbers(ListBox1.ListIndex)

Ce serait intéressant Mgr si vous pouviez tester la procédure initiale
dans word
et dans excel et nous dire de quoi il en retourne.

Je ne demande qu'à croire... Mgr, comme mon imprimante n'a qu'un bac, il
m'est difficile de tester !

Au besoin, demandez les lumières du st père ! ;-)

Salutations.




"Mgr T. Banni" a écrit dans le message de groupe de
discussion : #
bien vu, laurent
ce conseil mérite sa place chez la Misange, à moinsse qu'on ne l'y trouve
déjà....
merci en tous cas
Mgr T.B.

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai fait un rapide test sur mon poste, et sans passer par macro les bacs
sont bien enrégistré sur le document.
Je m'explique : sur une feuille, je change le bac, sur une seconde
feuille,
j'indique un autre bac et sur une troisième un autre bac.
J'enregistre mon document.
A la réouverture, je choisis l'imprimante qui va bien (l'imprimante avec
les
bacs n'est pas mon imprimante par défaut), pour chaque feuille, il
retrouve
les bons bacs (je n'ai pas lancé l'imprimante, j'ai juste vérifié les
paramètres).

Laurent

"Manu" a écrit :

Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu







Avatar
Manu
Mgr T. Banni a écrit :
ah! mais c'est que je n'ai qu'un bac, moi aussi....j'ai largement échoué au
second :-)
et puis je n'ai rien compris à la Function de dunzelkahn
allez en paix, comme dit mon honorable frère Abile
Mgr T.B.

"MichDenis" a écrit dans le message de news:

Bonjour Mgr,

Une petite remarque en passant.

La procédure originale fait référence à l'application Word et non Excel.

Dans Word, on retrouve la propriété "OtherPagesTray" inexistante dans
excel
La ligne de code suivante s'adresse au vba word et non vba excel.
ActiveDocument.PageSetup.OtherPagesTray = _
vBinNumbers(ListBox1.ListIndex)

Ce serait intéressant Mgr si vous pouviez tester la procédure initiale
dans word
et dans excel et nous dire de quoi il en retourne.

Je ne demande qu'à croire... Mgr, comme mon imprimante n'a qu'un bac, il
m'est difficile de tester !

Au besoin, demandez les lumières du st père ! ;-)

Salutations.




"Mgr T. Banni" a écrit dans le message de groupe de
discussion : #
bien vu, laurent
ce conseil mérite sa place chez la Misange, à moinsse qu'on ne l'y trouve
déjà....
merci en tous cas
Mgr T.B.

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai fait un rapide test sur mon poste, et sans passer par macro les bacs
sont bien enrégistré sur le document.
Je m'explique : sur une feuille, je change le bac, sur une seconde
feuille,
j'indique un autre bac et sur une troisième un autre bac.
J'enregistre mon document.
A la réouverture, je choisis l'imprimante qui va bien (l'imprimante avec
les
bacs n'est pas mon imprimante par défaut), pour chaque feuille, il
retrouve
les bons bacs (je n'ai pas lancé l'imprimante, j'ai juste vérifié les
paramètres).

Laurent

"Manu" a écrit :

Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu











Bonsoir Laurent, Mgr T Banni, MichDenis et tous les autres,


Ce que précise Laurent est très juste. Il est effectivement possible,
sans macro particulière, de choisir le tiroir d'alimentation qui
correspond (ex feuil 1 pour le tiroir 1, etc...).

Sauf qu'actuellement, mon problème est que depuis environ deux mois, il
y a des savants informaticiens qui mettent à jour je ne sais quoi sur le
réseau ce qui a pour conséquence de modifier mes choix de tiroir
d'alimentation et d'affecter l'ensemble de mes feuilles sur le tiroir 1.

D'où mon appel au secours à trouver une solution pour qu'une macro
affecte les feuilles de mon choix sur le tiroir de mon choix.

A bientôt.

Manu
Avatar
Manu
Mgr T. Banni a écrit :
ah! mais c'est que je n'ai qu'un bac, moi aussi....j'ai largement échoué au
second :-)
et puis je n'ai rien compris à la Function de dunzelkahn
allez en paix, comme dit mon honorable frère Abile
Mgr T.B.

"MichDenis" a écrit dans le message de news:

Bonjour Mgr,

Une petite remarque en passant.

La procédure originale fait référence à l'application Word et non Excel.

Dans Word, on retrouve la propriété "OtherPagesTray" inexistante dans
excel
La ligne de code suivante s'adresse au vba word et non vba excel.
ActiveDocument.PageSetup.OtherPagesTray = _
vBinNumbers(ListBox1.ListIndex)

Ce serait intéressant Mgr si vous pouviez tester la procédure initiale
dans word
et dans excel et nous dire de quoi il en retourne.

Je ne demande qu'à croire... Mgr, comme mon imprimante n'a qu'un bac, il
m'est difficile de tester !

Au besoin, demandez les lumières du st père ! ;-)

Salutations.




"Mgr T. Banni" a écrit dans le message de groupe de
discussion : #
bien vu, laurent
ce conseil mérite sa place chez la Misange, à moinsse qu'on ne l'y trouve
déjà....
merci en tous cas
Mgr T.B.

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai fait un rapide test sur mon poste, et sans passer par macro les bacs
sont bien enrégistré sur le document.
Je m'explique : sur une feuille, je change le bac, sur une seconde
feuille,
j'indique un autre bac et sur une troisième un autre bac.
J'enregistre mon document.
A la réouverture, je choisis l'imprimante qui va bien (l'imprimante avec
les
bacs n'est pas mon imprimante par défaut), pour chaque feuille, il
retrouve
les bons bacs (je n'ai pas lancé l'imprimante, j'ai juste vérifié les
paramètres).

Laurent

"Manu" a écrit :

Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu











Bonsoir Laurent, Mgr T Banni, MichDenis et tous les autres,


Ce que précise Laurent est très juste. Il est effectivement possible,
sans macro particulière, de choisir le tiroir d'alimentation qui
correspond (ex feuil 1 pour le tiroir 1, etc...).

Sauf qu'actuellement, mon problème est que depuis environ deux mois, il
y a des savants informaticiens qui mettent à jour je ne sais quoi sur le
réseau ce qui a pour conséquence de modifier mes choix de tiroir
d'alimentation et d'affecter l'ensemble de mes feuilles sur le tiroir 1.

D'où mon appel au secours à trouver une solution pour qu'une macro
affecte les feuilles de mon choix sur le tiroir de mon choix.

A bientôt.

Manu
Avatar
Manu
Mgr T. Banni a écrit :
ah! mais c'est que je n'ai qu'un bac, moi aussi....j'ai largement échoué au
second :-)
et puis je n'ai rien compris à la Function de dunzelkahn
allez en paix, comme dit mon honorable frère Abile
Mgr T.B.

"MichDenis" a écrit dans le message de news:

Bonjour Mgr,

Une petite remarque en passant.

La procédure originale fait référence à l'application Word et non Excel.

Dans Word, on retrouve la propriété "OtherPagesTray" inexistante dans
excel
La ligne de code suivante s'adresse au vba word et non vba excel.
ActiveDocument.PageSetup.OtherPagesTray = _
vBinNumbers(ListBox1.ListIndex)

Ce serait intéressant Mgr si vous pouviez tester la procédure initiale
dans word
et dans excel et nous dire de quoi il en retourne.

Je ne demande qu'à croire... Mgr, comme mon imprimante n'a qu'un bac, il
m'est difficile de tester !

Au besoin, demandez les lumières du st père ! ;-)

Salutations.




"Mgr T. Banni" a écrit dans le message de groupe de
discussion : #
bien vu, laurent
ce conseil mérite sa place chez la Misange, à moinsse qu'on ne l'y trouve
déjà....
merci en tous cas
Mgr T.B.

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai fait un rapide test sur mon poste, et sans passer par macro les bacs
sont bien enrégistré sur le document.
Je m'explique : sur une feuille, je change le bac, sur une seconde
feuille,
j'indique un autre bac et sur une troisième un autre bac.
J'enregistre mon document.
A la réouverture, je choisis l'imprimante qui va bien (l'imprimante avec
les
bacs n'est pas mon imprimante par défaut), pour chaque feuille, il
retrouve
les bons bacs (je n'ai pas lancé l'imprimante, j'ai juste vérifié les
paramètres).

Laurent

"Manu" a écrit :

Bonsoir à tous,


Mon PC est relié à une imprimante Lexmark qui possède 4 tiroirs.
Certaines feuilles doivent être rattachés au tiroir 1, d'autres au
tiroir 2, etc...

Ma question est la suivante : Comment peut-on, en VB, obliger
l'impression de la feuille 1 à partir du tiroir (bac) 1, etc... ?

Actuellement, lorsque j'ouvre mon fichier et que je lance l'impression,
celle-ci attache automatiquement l'ensemble de mes feuilles au tiroir 1,
ce qui génère un gâchis de papier énervant. Et comme je ne suis pas
véritablement pour le réchauffement de la planète, la solution à mon
problème serait la bienvenue.

Merci à celles ou ceux qui pourront m'aider.

Manu











Bonsoir Laurent, Mgr T Banni, MichDenis et tous les autres,


Ce que précise Laurent est très juste. Il est effectivement possible,
sans macro particulière, de choisir le tiroir d'alimentation qui
correspond (ex feuil 1 pour le tiroir 1, etc...).

Sauf qu'actuellement, mon problème est que depuis environ deux mois, il
y a des savants informaticiens qui mettent à jour je ne sais quoi sur le
réseau ce qui a pour conséquence de modifier mes choix de tiroir
d'alimentation et d'affecter l'ensemble de mes feuilles sur le tiroir 1.

D'où mon appel au secours à trouver une solution pour qu'une macro
affecte les feuilles de mon choix sur le tiroir de mon choix.

A bientôt.

Manu