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

Une imprimante par défaurt par feuille.

12 réponses
Avatar
Gadget
Salut à tous.
Y a-t-il moyen d'attribuer une imprimante par défaut qui varie selon la
feuille active, sans passer par VBA ? J'ai par exemple une feuille dont
l'impression doit être faite sur une imprimante, et à côté une autre sur une
autre. Si je sélectionne mon imprimante dans la boite de dialogue
'imprimer', celle-ci devient l'imprimante par défaut de tout le classeur. Ca
ne m'arrange pas.
En passant par VBA, c'est la même chose : 'Defaultprinter' applique
l'imprimante désignée à tout le classeur, et en plus l'execution de cette
commande prend du temps. Peut-être y a-t-il une autre commande que
'defaultprinter' que je ne connaitraîs pas... ?


Merci..

10 réponses

1 2
Avatar
FFO
Salut à toi

Dans le VBA de chaque feuille je mettrais ce code :

Private Sub Worksheet_Activate()
Application.ActivePrinter = "Nom de l'imprimante"

End Sub

Pour connaitre le nom exacte de chaque imprimante :
Aprés avoir mis l'imprimante active pour l'impression ce code dans la
cellule A1 rapporte son nom :

Range("A1") = Application.ActivePrinter

Une fois chaque Feuille avec son code et le nom approprié de l'imprimante à
activer à chaque sélection de l'une l'imprimante active devient celle que le
code de son VBA aura déterminé

Ce traitement est de l'ordre de quelque seconde

Fais des essais et dis moi !!!!
Avatar
Jac
Bonjour Gadget,

sans vba, point de salut !!!
Comment veux-tu un changement automatique sans vba ?
C'est possible dans Access de choisir pour chaque état d'impression une
imprimante spécifique. Mais pas dans Excel. Ça se saurait...

Donc si du vba peux te convenir, on en reparle.

Jac


Salut à tous.
Y a-t-il moyen d'attribuer une imprimante par défaut qui varie selon la
feuille active, sans passer par VBA ? J'ai par exemple une feuille dont
l'impression doit être faite sur une imprimante, et à côté une autre sur une
autre. Si je sélectionne mon imprimante dans la boite de dialogue 'imprimer',
celle-ci devient l'imprimante par défaut de tout le classeur. Ca ne m'arrange
pas.
En passant par VBA, c'est la même chose : 'Defaultprinter' applique
l'imprimante désignée à tout le classeur, et en plus l'execution de cette
commande prend du temps. Peut-être y a-t-il une autre commande que
'defaultprinter' que je ne connaitraîs pas... ?


Merci..


Avatar
Gadget
Merci pour ta réponse.
En fait, ce que je cherche, c'est d'éviter s'il y a moyen les quelques
secondes dont tu parles.
De plus, mes impression étant lancées via VBA, je ne crois pas qu'un ordre
d'impression d'une feuille non active déclenchera la sub Worksheet_Activate.
Je me trompe ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"FFO" a écrit dans le message de news:

Salut à toi

Dans le VBA de chaque feuille je mettrais ce code :

Private Sub Worksheet_Activate()
Application.ActivePrinter = "Nom de l'imprimante"

End Sub

Pour connaitre le nom exacte de chaque imprimante :
Aprés avoir mis l'imprimante active pour l'impression ce code dans la
cellule A1 rapporte son nom :

Range("A1") = Application.ActivePrinter

Une fois chaque Feuille avec son code et le nom approprié de l'imprimante
à
activer à chaque sélection de l'une l'imprimante active devient celle que
le
code de son VBA aura déterminé

Ce traitement est de l'ordre de quelque seconde

Fais des essais et dis moi !!!!




Avatar
Gadget
VBA me convient tout à fait, c'est juste que je cherche une manière
d'envoyer une impression sur une imprimante spécifique sans avoir à changer
l'imprimante par défaut. C'est possible ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"Jac" a écrit dans le message de news:

Bonjour Gadget,

sans vba, point de salut !!!
Comment veux-tu un changement automatique sans vba ?
C'est possible dans Access de choisir pour chaque état d'impression une
imprimante spécifique. Mais pas dans Excel. Ça se saurait...

Donc si du vba peux te convenir, on en reparle.

Jac


Salut à tous.
Y a-t-il moyen d'attribuer une imprimante par défaut qui varie selon la
feuille active, sans passer par VBA ? J'ai par exemple une feuille dont
l'impression doit être faite sur une imprimante, et à côté une autre sur
une autre. Si je sélectionne mon imprimante dans la boite de dialogue
'imprimer', celle-ci devient l'imprimante par défaut de tout le classeur.
Ca ne m'arrange pas.
En passant par VBA, c'est la même chose : 'Defaultprinter' applique
l'imprimante désignée à tout le classeur, et en plus l'execution de cette
commande prend du temps. Peut-être y a-t-il une autre commande que
'defaultprinter' que je ne connaitraîs pas... ?


Merci..






Avatar
FFO
Rebonjours à toi

Effectivement si tu lances tes impressions à partir d'un code VBA
l'évennement

Private Sub Worksheet_Activate()

ne se déclenchera pas

Maintenant tu peux te servir de la ligne de code dans ta macro d'impression
comme par exemple :

If activeSheets.Name = "feuil1" then
Application.ActivePrinter = "Nom de l'imprimante 1"
End If

If activeSheets.Name = "feuil2" then
Application.ActivePrinter = "Nom de l'imprimante 2"
End If

Etc....

avant de lancer la commande d'impression

A voir avec ton code VBA d'impression

Si tu me le transmets je peux t'aider à l'adapter

Dis moi !!!
Avatar
Gadget
Oui merci je connais et j'utilise .activeprinter dans mes macros, mais je
cherche un moyen de désigner ponctuellement une imprimante de sortie sans
changer l'imprimante par défaut à chaque fois, ce qui prend quelques
secondes précieuses : en fait, j'imprime à la volée des bulletins de salaire
(simple face) et des contrats de travail (recto verso). Dans la liasse
imprimée, le contrat de w doit suivre le bulletin correspondant. Le problème
est que le changement d'imprimante entre chaque feuille imprimée me fait
perdre quelques secondes à chaque fois, ce qui fait un paquet de secondes
quand il y a 50 bulletins et contrats de w à imprimer. Une idée ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"FFO" a écrit dans le message de news:

Rebonjours à toi

Effectivement si tu lances tes impressions à partir d'un code VBA
l'évennement

Private Sub Worksheet_Activate()

ne se déclenchera pas

Maintenant tu peux te servir de la ligne de code dans ta macro
d'impression
comme par exemple :

If activeSheets.Name = "feuil1" then
Application.ActivePrinter = "Nom de l'imprimante 1"
End If

If activeSheets.Name = "feuil2" then
Application.ActivePrinter = "Nom de l'imprimante 2"
End If

Etc....

avant de lancer la commande d'impression

A voir avec ton code VBA d'impression

Si tu me le transmets je peux t'aider à l'adapter

Dis moi !!!



Avatar
Gadget
J'ai déjà trouvé en partie la solution à mon problème : il semble que le
temps d'execution de :

.Printout Activeprinter:=xxx

soit plus court que celui de

Application. Activeprinter = "xxx"
.Printout

C'est déjà ça.

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"Gadget" a écrit dans le message de news:
4874cd20$0$869$
Oui merci je connais et j'utilise .activeprinter dans mes macros, mais je
cherche un moyen de désigner ponctuellement une imprimante de sortie sans
changer l'imprimante par défaut à chaque fois, ce qui prend quelques
secondes précieuses : en fait, j'imprime à la volée des bulletins de
salaire (simple face) et des contrats de travail (recto verso). Dans la
liasse imprimée, le contrat de w doit suivre le bulletin correspondant. Le
problème est que le changement d'imprimante entre chaque feuille imprimée
me fait perdre quelques secondes à chaque fois, ce qui fait un paquet de
secondes quand il y a 50 bulletins et contrats de w à imprimer. Une idée ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"FFO" a écrit dans le message de news:

Rebonjours à toi

Effectivement si tu lances tes impressions à partir d'un code VBA
l'évennement

Private Sub Worksheet_Activate()

ne se déclenchera pas

Maintenant tu peux te servir de la ligne de code dans ta macro
d'impression
comme par exemple :

If activeSheets.Name = "feuil1" then
Application.ActivePrinter = "Nom de l'imprimante 1"
End If

If activeSheets.Name = "feuil2" then
Application.ActivePrinter = "Nom de l'imprimante 2"
End If

Etc....

avant de lancer la commande d'impression

A voir avec ton code VBA d'impression

Si tu me le transmets je peux t'aider à l'adapter

Dis moi !!!







Avatar
Jac
Oui, c'est possible : il suffit de commencer par mettre dans une
variable le nom de l'imprimante actuelle
IMPRIMANTE_ORIGINE = Application.ActivePrinter

puis de changer d'imprimante
Application.ActivePrinter = "HP Photosmart C5200 series sur Ne03:"

puis d'imprimer

et à la fin de la macro
Application.ActivePrinter = IMPRIMANTE_ORIGINE

Pour ce qui est des imprimantes, le mieux c'est déclarer des constantes
Const IMP1 As String = "HP Photosmart C5200 series sur Ne03:"
puis d'utiliser IMP1, IMP2, ..., c'est plus facile à mettre en oeuvre
et à maintenir. Et si ton imprimante par défaut est toujours la même,
elle peut aussi passer en constante.

VBA me convient tout à fait, c'est juste que je cherche une manière d'envoyer
une impression sur une imprimante spécifique sans avoir à changer
l'imprimante par défaut. C'est possible ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"Jac" a écrit dans le message de news:

Bonjour Gadget,

sans vba, point de salut !!!
Comment veux-tu un changement automatique sans vba ?
C'est possible dans Access de choisir pour chaque état d'impression une
imprimante spécifique. Mais pas dans Excel. Ça se saurait...

Donc si du vba peux te convenir, on en reparle.

Jac


Salut à tous.
Y a-t-il moyen d'attribuer une imprimante par défaut qui varie selon la
feuille active, sans passer par VBA ? J'ai par exemple une feuille dont
l'impression doit être faite sur une imprimante, et à côté une autre sur
une autre. Si je sélectionne mon imprimante dans la boite de dialogue
'imprimer', celle-ci devient l'imprimante par défaut de tout le classeur.
Ca ne m'arrange pas.
En passant par VBA, c'est la même chose : 'Defaultprinter' applique
l'imprimante désignée à tout le classeur, et en plus l'execution de cette
commande prend du temps. Peut-être y a-t-il une autre commande que
'defaultprinter' que je ne connaitraîs pas... ?


Merci..








Avatar
Misange
Bonjour

regarde ici pour changer l'imprimante par défaut de windows
http://www.excelabo.net/excel/imprimervba.php#imprimanted%E9faut
et ici
http://www.excelabo.net/excel/imprimervba.php#choiximprimante
ainsi que là éventuellement
http://www.excelabo.net/excel/imprimervba.php#piloterimprimante

un peu de lecture en perspective ;-)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Gadget a écrit :
J'ai déjà trouvé en partie la solution à mon problème : il semble que le
temps d'execution de :

.Printout Activeprinter:=xxx

soit plus court que celui de

Application. Activeprinter = "xxx"
.Printout

C'est déjà ça.

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"Gadget" a écrit dans le message de news:
4874cd20$0$869$
Oui merci je connais et j'utilise .activeprinter dans mes macros, mais je
cherche un moyen de désigner ponctuellement une imprimante de sortie sans
changer l'imprimante par défaut à chaque fois, ce qui prend quelques
secondes précieuses : en fait, j'imprime à la volée des bulletins de
salaire (simple face) et des contrats de travail (recto verso). Dans la
liasse imprimée, le contrat de w doit suivre le bulletin correspondant. Le
problème est que le changement d'imprimante entre chaque feuille imprimée
me fait perdre quelques secondes à chaque fois, ce qui fait un paquet de
secondes quand il y a 50 bulletins et contrats de w à imprimer. Une idée ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"FFO" a écrit dans le message de news:

Rebonjours à toi

Effectivement si tu lances tes impressions à partir d'un code VBA
l'évennement

Private Sub Worksheet_Activate()

ne se déclenchera pas

Maintenant tu peux te servir de la ligne de code dans ta macro
d'impression
comme par exemple :

If activeSheets.Name = "feuil1" then
Application.ActivePrinter = "Nom de l'imprimante 1"
End If

If activeSheets.Name = "feuil2" then
Application.ActivePrinter = "Nom de l'imprimante 2"
End If

Etc....

avant de lancer la commande d'impression

A voir avec ton code VBA d'impression

Si tu me le transmets je peux t'aider à l'adapter

Dis moi !!!










Avatar
Gadget
Merci Misange. Dans le même registre : est-ce que tous les paramètres de
.Printout sont indiqués dans l'aide en ligne ? Peut-on grâce à une paramètre
de cette commande indiquer si l'on veut une impression simple face ou
recto/verso ?

--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"Misange" a écrit dans le message de news:

Bonjour

regarde ici pour changer l'imprimante par défaut de windows
http://www.excelabo.net/excel/imprimervba.php#imprimanted%E9faut
et ici
http://www.excelabo.net/excel/imprimervba.php#choiximprimante
ainsi que là éventuellement
http://www.excelabo.net/excel/imprimervba.php#piloterimprimante

un peu de lecture en perspective ;-)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Gadget a écrit :
J'ai déjà trouvé en partie la solution à mon problème : il semble que le
temps d'execution de :

.Printout Activeprinter:=xxx

soit plus court que celui de

Application. Activeprinter = "xxx"
.Printout

C'est déjà ça.

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"Gadget" a écrit dans le message de news:
4874cd20$0$869$
Oui merci je connais et j'utilise .activeprinter dans mes macros, mais
je cherche un moyen de désigner ponctuellement une imprimante de sortie
sans changer l'imprimante par défaut à chaque fois, ce qui prend
quelques secondes précieuses : en fait, j'imprime à la volée des
bulletins de salaire (simple face) et des contrats de travail (recto
verso). Dans la liasse imprimée, le contrat de w doit suivre le bulletin
correspondant. Le problème est que le changement d'imprimante entre
chaque feuille imprimée me fait perdre quelques secondes à chaque fois,
ce qui fait un paquet de secondes quand il y a 50 bulletins et contrats
de w à imprimer. Une idée ?


--

--
"Si j'avais 9 vies comme les bouddhistes, j'en utiliserais 8 à me
suicider devant les Assédic" -- Un intermittent du spectacle.
Extrait des Brèves de Comptoir de Tohu Bohu.
"FFO" a écrit dans le message de news:

Rebonjours à toi

Effectivement si tu lances tes impressions à partir d'un code VBA
l'évennement

Private Sub Worksheet_Activate()

ne se déclenchera pas

Maintenant tu peux te servir de la ligne de code dans ta macro
d'impression
comme par exemple :

If activeSheets.Name = "feuil1" then
Application.ActivePrinter = "Nom de l'imprimante 1"
End If

If activeSheets.Name = "feuil2" then
Application.ActivePrinter = "Nom de l'imprimante 2"
End If

Etc....

avant de lancer la commande d'impression

A voir avec ton code VBA d'impression

Si tu me le transmets je peux t'aider à l'adapter

Dis moi !!!











1 2