[VBA] Choix d'une imprimante : pas si simple

F22Raptor

XLDnaute Impliqué
Bonjour à tous,
Je sélectionne une imprimante parmi la liste des imprimantes réseaux de l'entreprise :

Application.ActivePrinter = "\\frlcfimp3\IMP148 sur Ne03:"

Problème : la même macro plante sur le poste d'un collègue, car chez lui c'est : "sur Ne02:" !!!

Comment gérer cela ?
Je me disais qu'idéalement, il faudrait tester par une boucle chaque imprimante, et dès qu'on trouve un nom d'imprimante qui contient IMP148, on récupère le nom complet (avec le "sur Ne0X:")

Je dois avouer que cette solution simple se heurte à un problème simple : comment faire une boucle sur la collection d'imprimantes ?! :D
Une autre idée ?
 

Modeste geedee

XLDnaute Barbatruc
Re : [VBA] Choix d'une imprimante : pas si simple

Bonsour®
Je dois avouer que cette solution simple se heurte à un problème simple : comment faire une boucle sur la collection d'imprimantes ?! :D
Une autre idée ?

VB:
Sub ChangerPrinter()
Dim oldprinter  As String, reponse
oldprinter = Application.ActivePrinter
Application.Dialogs(xlDialogPrinterSetup).Show
reponse = MsgBox("Imprimante précedente : " & oldprinter & Chr(10) & "Imprimante actuelle : " & Application.ActivePrinter, vbOKCancel + vbQuestion + vbDefaultButton2, "Changer d'imprimante ")
If reponse <> vbOK Then Application.ActivePrinter = oldprinter
End Sub
 

F22Raptor

XLDnaute Impliqué
Re : [VBA] Choix d'une imprimante : pas si simple

Hello,
Merci pour vos propals.
Staple : je n'avais pas vu ce lien, mais un autre, chez Microsoft, qui faisait appel à des API, et une recherche dans le WIN.INI ... bref, pas le plus simple !
Modeste : je souhaitais pouvoir lancer une impression sur une imprimante donnée, justement sans avoir à la choisir via une boîte.

Mon problème était le "Ne0X:" qui change suivant les PC du même bureau.
J'ai rusé ! :D

Je concatène ""\\frlcfimp3\IMP148 sur Ne" avec une variable qui va de 0 à 30 par exemple, que je code ensuite en String sur 2 chiffres (00,01,02...), et j'ajoute ":" à la fin de la concaténation.
J'essaye de switcher pour cette imprimante, et si ça bugge, je passe au chiffre suivant.
Dès que l'imprimante est paramétrée, je sors de la boucle (mon IF ci-dessous)


VB:
    Dim Compteur As Byte
    Dim CompteurXX As String
    Dim Imprimante As String
    
    On Error Resume Next
    
    For Compteur = 0 To 30
    
        CompteurXX = Format(Compteur, "00")
        Imprimante = "\\frlcfimp3\IMP148 sur Ne" & CompteurXX & ":"

        Application.ActivePrinter = Imprimante
        
        If Application.ActivePrinter = Imprimante Then Exit For
    
    Next Compteur
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : [VBA] Choix d'une imprimante : pas si simple

Bonsour®
il serait plus simple de recenser une liste des imprimantes du réseau
et designer alors l'imprimante voulue (il n'y en a pas tant que çà dans "UN bureau"...)

de plus à savoir que sur le poste de ton collègue le activeprinter fait nécessairement partie de l'une ou l'autre des imprimantes connectées (paramètres Windows)
probablement même que tu cherches à forcer le activeprinter alors que celui-ci est déjà le bon ????
 
Dernière édition:

F22Raptor

XLDnaute Impliqué
Re : [VBA] Choix d'une imprimante : pas si simple

C'est le port qui pose problème :

j'ai deux boutons sur ma feuille : l'un imprime sur l'imprimante couleur IMPC222, et l'autre sur la N&B IMP148
Il faut donc commencer par sélectionner la bonne imprimante, et le nom de l'imprimante à donner à VBA doit comprendre le port "sur Ne02:"

Or, pour la même imprimante, sur mon PC, le nom à sélectionner sera IMPC222 sur Ne02: et chez mon collègue : IMPC222 sur Ne03:

Et le pire, c'est que chez moi dans 3 semaines, ce sera peut-être "sur Ne05:" !!!
Mystères et bizarreries des réseaux ...

Du coup, soit j'identifie en amont à chaque clic sur le bouton le port de l'IMPC222 sur le PC actif, et je sélectionne donc la bonne imprimante, soit (ma soluce), je teste tous les ports depuis 00, jusqu'à ce que je tombe sur le bon (EXIT FOR).
 

Statistiques des forums

Discussions
312 491
Messages
2 088 889
Membres
103 982
dernier inscrit
krakencolas