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

Choix d'une imprimante ??

5 réponses
Avatar
jacques
Bjr
j'ai fait une macro pour imprimer, en fonction du nombre d'étiquettes
désirées, soit une imprimante unitaire, soit une imprimante standard qui
imprime par pages d'étiquettes.
Pas de probléme pour l'imprimante unitaire qui est connectée sur le port LPT1.
Mais pour la 2eme imprimante, connéctée sur un port USB, il apparait que
l'imprimante change d'emplacement lors du redémarrage du micro.
Explication : ma macro est :
If page > 0 Then
Sheets("INS page").Visible = True
Sheets("INS page").Select
Application.ActivePrinter = "Brother HL-5340D sur Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=page, ActivePrinter:= _
"Brother HL-5340D sur Ne02:", Collate:=True
ActiveWindow.SelectedSheets.Visible = False
End If
Le probléme vient du "Ne02" qui de temps en temps devient "Ne00" et revient
quelques jours plus tard en "Ne00"
Pourquoi ???
y a t-il un moyen de bloquer ceci (par exemple en donnant un nom définitif à
l'imprimante ???)

Merci de votre aide

--
Jacques

5 réponses

Avatar
Modeste
Bonsour® jacques avec ferveur ;o))) vous nous disiez :

y a t-il un moyen de bloquer ceci (par exemple en donnant un nom
définitif à l'imprimante ???)



il suffit :
- de sauvegarder le nom de l'imprimante active par défaut
- choisir l'imprimante à utiliser parmi les imprimantes détectées

Sub Change_printer()
Dim PrinterOld As String
Dim Reponse, dlgAnswer
PrinterOld = Application.ActivePrinter
MsgBox "L'imprimante active actuelle est : " _
& vbLf & " ====> " & PrinterOld, vbInformation

dlgAnswer = Application.Dialogs(xlDialogPrinterSetup).Show
If dlgAnswer = True Then
'------ ceci n'est qu'une seule instruction
Reponse = MsgBox("L'imprimante active était : " _
& vbLf & " ====> " & PrinterOld _
& vbLf & " elle sera maintenant : " _
& vbLf & " ====> " & Application.ActivePrinter _
& vbLf & "Voulez vous confirmer ?", _
vbQuestion + vbYesNo, _
"Changement d'imprimante")
'------
If Reponse = vbYes Then
MsgBox "L'imprimante active actuelle devient : " _
& vbLf & " ====> " & Application.ActivePrinter, vbInformation
Exit Sub
End If
Else
Application.ActivePrinter = PrinterOld
MsgBox "L'imprimante active reste : " _
& vbLf & " ====> " & PrinterOld, vbInformation
End If
End Sub
Avatar
jacques
Bjr

Merci, mais cen'est pas tout a fait ce que je voudrais.
mon probléme vient du fait que le nom de l'imprimante sous windows XP peut
changer (en particulier le Ne00 ou Ne01 ou Nexx) et donc ma macro ne
fonctionne plus.
Je ne veut pas que l'utilisateur puisse choisir l'imprimante dans une liste,
mais je veux forcer une imprimante en fonction du nombre d'exemplaire des
étiquettes.
cela doit être complétement transparrent pour l'utilisateur.

Si vous savez pourquoi l'affectation de l'imprimante change ???

merci

Cdt
--
Jacques


"Modeste" a écrit :

Bonsour® jacques avec ferveur ;o))) vous nous disiez :

> y a t-il un moyen de bloquer ceci (par exemple en donnant un nom
> définitif à l'imprimante ???)

il suffit :
- de sauvegarder le nom de l'imprimante active par défaut
- choisir l'imprimante à utiliser parmi les imprimantes détectées

Sub Change_printer()
Dim PrinterOld As String
Dim Reponse, dlgAnswer
PrinterOld = Application.ActivePrinter
MsgBox "L'imprimante active actuelle est : " _
& vbLf & " ====> " & PrinterOld, vbInformation

dlgAnswer = Application.Dialogs(xlDialogPrinterSetup).Show
If dlgAnswer = True Then
'------ ceci n'est qu'une seule instruction
Reponse = MsgBox("L'imprimante active était : " _
& vbLf & " ====> " & PrinterOld _
& vbLf & " elle sera maintenant : " _
& vbLf & " ====> " & Application.ActivePrinter _
& vbLf & "Voulez vous confirmer ?", _
vbQuestion + vbYesNo, _
"Changement d'imprimante")
'------
If Reponse = vbYes Then
MsgBox "L'imprimante active actuelle devient : " _
& vbLf & " ====> " & Application.ActivePrinter, vbInformation
Exit Sub
End If
Else
Application.ActivePrinter = PrinterOld
MsgBox "L'imprimante active reste : " _
& vbLf & " ====> " & PrinterOld, vbInformation
End If
End Sub








Avatar
MichDenis
Bonjour Jacques,

Pour déterminer l'imprimante de ton choix au moment de l'impression :

If NombreÉtiquettes >50 then
Application.ActivePrinter = "Canon LBP-465 sur LPT1:"
Else
Application.ActivePrinter = "NomImprimante sur LPT1:"
end if

Canon LBP-465 est le nom de l'imprimante, telle qu'elle est définie
dans le panneau de configuration. Tu dois ajouter : "sur LPT1:"





"jacques" a écrit dans le message de groupe de discussion :

Bjr

Merci, mais cen'est pas tout a fait ce que je voudrais.
mon probléme vient du fait que le nom de l'imprimante sous windows XP peut
changer (en particulier le Ne00 ou Ne01 ou Nexx) et donc ma macro ne
fonctionne plus.
Je ne veut pas que l'utilisateur puisse choisir l'imprimante dans une liste,
mais je veux forcer une imprimante en fonction du nombre d'exemplaire des
étiquettes.
cela doit être complétement transparrent pour l'utilisateur.

Si vous savez pourquoi l'affectation de l'imprimante change ???

merci

Cdt
--
Jacques


"Modeste" a écrit :

Bonsour® jacques avec ferveur ;o))) vous nous disiez :

> y a t-il un moyen de bloquer ceci (par exemple en donnant un nom
> définitif à l'imprimante ???)

il suffit :
- de sauvegarder le nom de l'imprimante active par défaut
- choisir l'imprimante à utiliser parmi les imprimantes détectées

Sub Change_printer()
Dim PrinterOld As String
Dim Reponse, dlgAnswer
PrinterOld = Application.ActivePrinter
MsgBox "L'imprimante active actuelle est : " _
& vbLf & " ====> " & PrinterOld, vbInformation

dlgAnswer = Application.Dialogs(xlDialogPrinterSetup).Show
If dlgAnswer = True Then
'------ ceci n'est qu'une seule instruction
Reponse = MsgBox("L'imprimante active était : " _
& vbLf & " ====> " & PrinterOld _
& vbLf & " elle sera maintenant : " _
& vbLf & " ====> " & Application.ActivePrinter _
& vbLf & "Voulez vous confirmer ?", _
vbQuestion + vbYesNo, _
"Changement d'imprimante")
'------
If Reponse = vbYes Then
MsgBox "L'imprimante active actuelle devient : " _
& vbLf & " ====> " & Application.ActivePrinter, vbInformation
Exit Sub
End If
Else
Application.ActivePrinter = PrinterOld
MsgBox "L'imprimante active reste : " _
& vbLf & " ====> " & PrinterOld, vbInformation
End If
End Sub








Avatar
FS
Bonjour,

Dans ce cas le code ci-dessous peut sans doute t'aider. Si une partie du
nom change (je pense que c'est Windows qui est responsable de ça), une
autre reste constante (par exemple "Brother HL-5340D" dans l'exemple que
tu donnes).

(Le code est basé sur une contribution de Michel Pierron et s'applique
aux imprimantes en réseau et locales -partagées en tout cas).
Je ne suis pas en réseau, donc je n'ai pas testé.

'======================= Sub SetMonImprimante()
Dim MonImpr, S, Serveur
Dim Fait As Boolean, wsN

MonImpr = "Brother HL-5340D"
Serveur = "Serveur01" 'ou autre
Set wsN = CreateObject("WScript.Network")
'recherche l'imprimante à utiliser
With wsN.EnumPrinterConnections
For iCount = 0 To .Count - 1 Step 2
S = .Item(iCount + 1) & " sur port: " & .Item(iCount)
MsgBox S
If InStr(1, S, MonImpr) > 0 Then
Fait = True
Exit For
End If
Next
End With

If Fait Then 'affecte l'imprimante à utiliser
wsN.SetDefaultPrinter Serveur & S
'ou (?)
'Application.ActivePrinter = S
Else
MsgBox "imprimante pas trouvée"
End If
End Sub
'=======================
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

jacques a écrit :
Bjr

Merci, mais cen'est pas tout a fait ce que je voudrais.
mon probléme vient du fait que le nom de l'imprimante sous windows XP peut
changer (en particulier le Ne00 ou Ne01 ou Nexx) et donc ma macro ne
fonctionne plus.
Je ne veut pas que l'utilisateur puisse choisir l'imprimante dans une liste,
mais je veux forcer une imprimante en fonction du nombre d'exemplaire des
étiquettes.
cela doit être complétement transparrent pour l'utilisateur.

Si vous savez pourquoi l'affectation de l'imprimante change ???

merci

Cdt


Avatar
jacques
Ok merci je vais essayer de ce coté.
Mais effectivement c'est windows qui change l'affectation de l'imprimante.
Quand il s'agit du port LPT, cela n'est pas génat (car cela reste toujours
sur LPT1)
mais pour les ports USB, en fonction de la détection que fait Windows XP,
cela peut passer de "Ne00" à "Ne01" ou "Ne02" ....

merci a tous de votre aide

--
Jacques


"FS" a écrit :

Bonjour,

Dans ce cas le code ci-dessous peut sans doute t'aider. Si une partie du
nom change (je pense que c'est Windows qui est responsable de ça), une
autre reste constante (par exemple "Brother HL-5340D" dans l'exemple que
tu donnes).

(Le code est basé sur une contribution de Michel Pierron et s'applique
aux imprimantes en réseau et locales -partagées en tout cas).
Je ne suis pas en réseau, donc je n'ai pas testé.

'======================= > Sub SetMonImprimante()
Dim MonImpr, S, Serveur
Dim Fait As Boolean, wsN

MonImpr = "Brother HL-5340D"
Serveur = "Serveur01" 'ou autre
Set wsN = CreateObject("WScript.Network")
'recherche l'imprimante à utiliser
With wsN.EnumPrinterConnections
For iCount = 0 To .Count - 1 Step 2
S = .Item(iCount + 1) & " sur port: " & .Item(iCount)
MsgBox S
If InStr(1, S, MonImpr) > 0 Then
Fait = True
Exit For
End If
Next
End With

If Fait Then 'affecte l'imprimante à utiliser
wsN.SetDefaultPrinter Serveur & S
'ou (?)
'Application.ActivePrinter = S
Else
MsgBox "imprimante pas trouvée"
End If
End Sub
'======================= >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

jacques a écrit :
> Bjr
>
> Merci, mais cen'est pas tout a fait ce que je voudrais.
> mon probléme vient du fait que le nom de l'imprimante sous windows XP peut
> changer (en particulier le Ne00 ou Ne01 ou Nexx) et donc ma macro ne
> fonctionne plus.
> Je ne veut pas que l'utilisateur puisse choisir l'imprimante dans une liste,
> mais je veux forcer une imprimante en fonction du nombre d'exemplaire des
> étiquettes.
> cela doit être complétement transparrent pour l'utilisateur.
>
> Si vous savez pourquoi l'affectation de l'imprimante change ???
>
> merci
>
> Cdt