EXIT.SUB si imprimante X non sélectionnée
Résolu/Fermé
A voir également:
- EXIT.SUB si imprimante X non sélectionnée
- Direct x runtime - Télécharger - Pilotes & Matériel
- Spouleur imprimante - Guide
- Télécharger pilote imprimante hp - Télécharger - Pilotes & Matériel
- Film x sur iptv - Forum TNT / Satellite / Réception
- Imprimante en pause hp ✓ - Forum Imprimante
9 réponses
NHenry
Messages postés
15175
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 décembre 2024
350
6 août 2016 à 22:04
6 août 2016 à 22:04
Quelle est la version de VB ? (VBA, VB6, VBS, VB.NET, ... )
En VBA/VB6, il y a l'objet Printer qui peut peut-être t'aider.
En VBA/VB6, il y a l'objet Printer qui peut peut-être t'aider.
Bonjour NHenry,
Merci de prendre en compte ma demande.
C'est du VBA
Merci de prendre en compte ma demande.
C'est du VBA
NHenry
Messages postés
15175
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 décembre 2024
350
7 août 2016 à 22:36
7 août 2016 à 22:36
Une recherche rapide sur le net "VBAcurrent printer", voici une page intéressante :
https://wordmvp.com/FAQs/MacrosVBA/ChangeCurPrinter.htm
https://wordmvp.com/FAQs/MacrosVBA/ChangeCurPrinter.htm
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
8 août 2016 à 11:44
8 août 2016 à 11:44
Bonjour,
Que te donne ce code :
Que te donne ce code :
Sub test() MsgBox ActivePrinter End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je dois sûrement manquer de précision.
J’ai 2 imprimantes (1 EPSON et 1 CANON) qui ne sont jamais raccordées en même temps sur l’ordinateur portable.
Dans mon classeur j’ai un bouton « A » avec une macro impression, qui doit imprimer uniquement sur l’imprimante EPSON.
Si l’imprimante CANON est raccordée et pas l’imprimante EPSON, la macro de mon bouton « A » ne doit pas se lancer.
En espérant avoir été plus explicite, je vous remercie.
J’ai 2 imprimantes (1 EPSON et 1 CANON) qui ne sont jamais raccordées en même temps sur l’ordinateur portable.
Dans mon classeur j’ai un bouton « A » avec une macro impression, qui doit imprimer uniquement sur l’imprimante EPSON.
Si l’imprimante CANON est raccordée et pas l’imprimante EPSON, la macro de mon bouton « A » ne doit pas se lancer.
En espérant avoir été plus explicite, je vous remercie.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
8 août 2016 à 16:36
8 août 2016 à 16:36
Au risque de me répéter, que te donne ce code :
Avec l'une et/ou l'autre imprimante raccordée à ton ordinateur portable.
Sub test() MsgBox ActivePrinter End Sub
Avec l'une et/ou l'autre imprimante raccordée à ton ordinateur portable.
Merci à vous pour votre implication,
Votre code me donne le nom de l'imprimante raccordée.Ce n'est pas ce que je recherche.
J'aimerai un code qui dit:
Si l'imprimante "EPSON" n'est pas raccordée
Alors j'arrête la macro (exit sub)
Si elle est raccordée
Alors je continue ma macro (end if)
Votre code me donne le nom de l'imprimante raccordée.Ce n'est pas ce que je recherche.
J'aimerai un code qui dit:
Si l'imprimante "EPSON" n'est pas raccordée
Alors j'arrête la macro (exit sub)
Si elle est raccordée
Alors je continue ma macro (end if)
NHenry
Messages postés
15175
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 décembre 2024
350
8 août 2016 à 17:55
8 août 2016 à 17:55
Tu as le nom de l'imprimante, maintenant à toi de faire le code qui va avec.
Si je me tourne vers vous c'est que mes connaissances dans le domaine sont plus que limitées.
Je ne suis pas capable d'écrire ce code.
Merci quand même.
Je ne suis pas capable d'écrire ce code.
Merci quand même.
Bonsoir VDB.57,
Je crois avoir trouvé ce qu'il te faut ici ; regarde successivement
les 3 messages suivants (n° message à droite et au bout) :
a) le #1 d'andre michel, qui a le même problème que toi
b) le #4 qui est la solution apportée par Docmarti
c) le #5 d'andre michel qui confirme que c'est ok
Bon courage pour lire le code VBA, car il est très technique et assez long !
Il se peut que tu doives juste te contenter de le copier / coller, sans plus.
Je compte sur toi pour nous informer si tu as réussi à utiliser sa solution.
Si oui, tu pourras passer ce sujet en résolu. Cordialement. 😊
Je crois avoir trouvé ce qu'il te faut ici ; regarde successivement
les 3 messages suivants (n° message à droite et au bout) :
a) le #1 d'andre michel, qui a le même problème que toi
b) le #4 qui est la solution apportée par Docmarti
c) le #5 d'andre michel qui confirme que c'est ok
Bon courage pour lire le code VBA, car il est très technique et assez long !
Il se peut que tu doives juste te contenter de le copier / coller, sans plus.
Je compte sur toi pour nous informer si tu as réussi à utiliser sa solution.
Si oui, tu pourras passer ce sujet en résolu. Cordialement. 😊
Bonsoir Albkan,
Comme tu me l’as demandé J’ai regardé le code de Docmarti il ne fonctionne pas chez moi.
Je pensais que ma demande était assez simple, mais apparemment ça n’est pas le cas.
Comme je l’expliquai, SI l’imprimante « EPSON TM » est raccordée alors J’imprime, SI NON je n’imprime pas.
Un code qui ressemblerait un peu à ça :
If (code imprimante Epson non raccordée) Then
Exit Sub
End If '
Mais vu mes faibles connaissances je me trompe sûrement. J’ai un peu honte de vous solliciter de la sorte.
Comme tu me l’as demandé J’ai regardé le code de Docmarti il ne fonctionne pas chez moi.
Je pensais que ma demande était assez simple, mais apparemment ça n’est pas le cas.
Comme je l’expliquai, SI l’imprimante « EPSON TM » est raccordée alors J’imprime, SI NON je n’imprime pas.
Un code qui ressemblerait un peu à ça :
If (code imprimante Epson non raccordée) Then
Exit Sub
End If '
Mais vu mes faibles connaissances je me trompe sûrement. J’ai un peu honte de vous solliciter de la sorte.
Bonsoir VDB.57,
Non, non, tu n'as aucune honte à avoir : le site CCM est un forum d'entraide
qui est fait pour ça, et ça me fait plaisir de rendre service quand j'en ai le temps
et que c'est dans mes compétences ; mais je reconnais que même pour moi,
le code très technique de Docmarti n'est pas évident !
Je crois que ce code « dialogue » avec une API (Application Program Interface)
de Windows pour pouvoir détecter l'état de l'imprimante : au repos, en cours
d'impression (= busy), en réchauffement, ou hors ligne.
Je ne sais pas bien si le « hors ligne » correspond à « imprimante réseau qui
n'est pas connectée au réseau » ou « imprimante débranchée et donc non
connectée ».
Mais toi, qu'appelles-tu « raccordée » ? Est-ce raccordée à un réseau ou
simplement branchée : tu as mis la prise et ton Epson est allumée ?
D'autre part, as-tu une seule imprimante ? Ou en as-tu plusieurs et tu veux
savoir si l'une d'elles, par exemple l'« EPSON TM » est « raccordée » ?
Je demande ça car si tu as plusieurs imprimantes, il faut pouvoir détecter
la bonne ; dans le code de Docmarti, la ligne de code #21 est là pour
pouvoir vérifier toutes les imprimantes installées :
colInstalledPrinters : ce nom commence par col pour se rappeler que suite à
son affectation, il contient la collection de toutes les imprimantes installées
(donc toutes celles qui sont dans « Périphériques et imprimantes ») ; rappel :
For each = pour chaque, donc objPrinter contient au fur et à mesure une
seule des imprimantes installées ; obj est pour se rappeler que c'est une
variable de type objet.
La ligne de code #23 vérifie si le nom de l'imprimante installée
objPrinter est l'imprimante active (car objPrinter.name) :
Je n'en suis pas sûr, mais je pense que imprimante active = celle qui est
sélectionnée par défaut (voir Périphériques et imprimantes).
Enfin, ton code pourrait être :
À te lire, cordialement. 😊
Non, non, tu n'as aucune honte à avoir : le site CCM est un forum d'entraide
qui est fait pour ça, et ça me fait plaisir de rendre service quand j'en ai le temps
et que c'est dans mes compétences ; mais je reconnais que même pour moi,
le code très technique de Docmarti n'est pas évident !
Je crois que ce code « dialogue » avec une API (Application Program Interface)
de Windows pour pouvoir détecter l'état de l'imprimante : au repos, en cours
d'impression (= busy), en réchauffement, ou hors ligne.
Je ne sais pas bien si le « hors ligne » correspond à « imprimante réseau qui
n'est pas connectée au réseau » ou « imprimante débranchée et donc non
connectée ».
Mais toi, qu'appelles-tu « raccordée » ? Est-ce raccordée à un réseau ou
simplement branchée : tu as mis la prise et ton Epson est allumée ?
D'autre part, as-tu une seule imprimante ? Ou en as-tu plusieurs et tu veux
savoir si l'une d'elles, par exemple l'« EPSON TM » est « raccordée » ?
Je demande ça car si tu as plusieurs imprimantes, il faut pouvoir détecter
la bonne ; dans le code de Docmarti, la ligne de code #21 est là pour
pouvoir vérifier toutes les imprimantes installées :
For Each objPrinter In colInstalledPrinters
colInstalledPrinters : ce nom commence par col pour se rappeler que suite à
son affectation, il contient la collection de toutes les imprimantes installées
(donc toutes celles qui sont dans « Périphériques et imprimantes ») ; rappel :
For each = pour chaque, donc objPrinter contient au fur et à mesure une
seule des imprimantes installées ; obj est pour se rappeler que c'est une
variable de type objet.
La ligne de code #23 vérifie si le nom de l'imprimante installée
objPrinter est l'imprimante active (car objPrinter.name) :
If InStr(Application.ActivePrinter, objPrinter.name) Then
Je n'en suis pas sûr, mais je pense que imprimante active = celle qui est
sélectionnée par défaut (voir Périphériques et imprimantes).
Enfin, ton code pourrait être :
If (code imprimante Epson non raccordée) Then Exit Sub ' sur la même ligne ' ici, code exécuté si imprimante raccordée => instructions d'impression
À te lire, cordialement. 😊
Merci pour ces mots,
J'ai 2 imprimantes mais il n'y aura toujours qu'une seule branchée sur mon portable, Elle sera alimentée 220V (prête à l'emploi) et raccordée sur une prise USB du portable.
Il se fait tard, j'essayerai demain tes codes.
Je te souhaite une bonne nuit et te remercie encore.
Cordialement
J'ai 2 imprimantes mais il n'y aura toujours qu'une seule branchée sur mon portable, Elle sera alimentée 220V (prête à l'emploi) et raccordée sur une prise USB du portable.
Il se fait tard, j'essayerai demain tes codes.
Je te souhaite une bonne nuit et te remercie encore.
Cordialement
Ajout : va dans Panneau de configuration / Périphériques et imprimantes
et regarde le nom que tu as donné à ton imprimante par défaut (celle où
tu imprimes habituellement).
Dis-moi quel est ce nom, et aussi ce qu'affiche cette Sub :
Sub Essai() MsgBox "Imprimante active : " & Application.ActivePrinter End Sub
Le nom de ton imprimante apparaît-il dans la chaîne de caractères
affichée par l'instruction MsgBox ? Il le faut pour que l'état (statut)
de ton imprimante puisse être testé !
Je ne suis pas sûr que tu as correctement implémenté le code de
Docmarti : Function TesterActivePrinter(...) As Long ET appel de
cette fonction via la Sub test() située en dessous.
Aussi, ce serait mieux que tu mettes un lien Cjoint sur ton fichier
Excel correspondant (sauf si tu arrives à résoudre ton problème
avec toutes les nouvelles infos des messages #13 et #15).
Je viens de voir ton message #14, mais je poste quand même
celui-ci. Bonne nuit également, et à demain. 😊
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
9 août 2016 à 08:03
9 août 2016 à 08:03
Bonjour,
Inutile de te lancer dans des usines à gaz.
Si tu veux juste vérifier que ton imprimante active est l'Epson, il te suffit de tester ActivePrinter comme ceci :
Inutile de te lancer dans des usines à gaz.
Si tu veux juste vérifier que ton imprimante active est l'Epson, il te suffit de tester ActivePrinter comme ceci :
Sub Test_Imprimante() If Not UCase(ActivePrinter) Like "*EPSON*" Then Exit Sub 'le reste de ton code ici End Sub