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 ???)
Sub Change_printer() Dim PrinterOld As String Dim Reponse, dlgAnswer PrinterOld = Application.ActivePrinter MsgBox "L'imprimante active actuelle est : " _ & vbLf & " ====> " & PrinterOld, vbInformation
Sub Change_printer()
Dim PrinterOld As String
Dim Reponse, dlgAnswer
PrinterOld = Application.ActivePrinter
MsgBox "L'imprimante active actuelle est : " _
& vbLf & " ====> " & PrinterOld, vbInformation
Sub Change_printer() Dim PrinterOld As String Dim Reponse, dlgAnswer PrinterOld = Application.ActivePrinter MsgBox "L'imprimante active actuelle est : " _ & vbLf & " ====> " & PrinterOld, vbInformation
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
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
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
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
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" <jellie@sotralu.fr> a écrit dans le message de groupe de discussion :
5B64F026-E78C-4D01-9BC1-12CE17EEC00F@microsoft.com...
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
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
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
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 ???
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
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
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
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