Adresse d'imprimante qui change
Bonjour le forum et puisque cela fait longtemps que je ne suis pas venu, je vous souhaite une bonne année.
Voici mon problème.
J'imprime par macro (toute simple enregistré avec excel) sur une imprimante du réseau qui s'apelle par exemple: imprabc.
lorsque j'ai enregistré la macro, il m'a mis "imprimante imprabc sur ne02" jusque la pas de problème.
Après un blocage, je me suis aperçu que le "ne02" se changeait régulièrement en "ne01" ou "ne03".
D'où ma question.
Puis-je désigner l'imprimante juste par "imprabc" et trouver le "ne0X" du moment à coup sùr?
ou puis-je désigner cette même imprimante par son adresse IP (je croit que celle-ci ne change jamais mais j'ai pas vérifié, dites moi si je me trompe)?
J'esperes avoir été assez clair et vous remercie d'avance pour votre aide.
Cordialement.
Salut le forum
Bonne Année 2012 !
Qu'elle soit riche de joie et de gaieté,
qu'elle déborde de bonheur et de prospérité
et que tous les voeux formulés deviennent réalité !
Utilise une boîte de dialogue pour sélectionner l'imprimante
Dim dlganswer As Boolean
dlganswer = Application.Dialogs(xlDialogPrinterSetup).Show
If dlganswer = True Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1, collate:=True
End If
Trouver sur un autre forum, une boucle pour tester le port de l'imprimante
For aa = 0 To 9
Nom = 'EPSON Stylus C82 Series sur Ne0' & aa & ':'
OnErrorResumeNext
Application.ActivePrinter = Nom
If ActivePrinter = Nom ThenExitFor
Next
Mytå
Bonsoir
A essayer
Sub Impression()
' Adaptée à partir du code de PascalXLD
' http://www.excel-downloads.com/forum/46536-imprimante-sur-port-usb-variable.html
Dim I As Integer
Dim MonImprimante As String
Dim Nom As String
MonImprimante = ActivePrinter 'récupérer imprimante active
On Error Resume Next
For I = 0 To 9
Nom = "imprimante imprabc sur ne0" & I & ":"
Application.ActivePrinter = Nom
If UCase(ActivePrinter) = UCase(Nom) Then Exit For
Next I
On Error GoTo 0
If UCase(ActivePrinter) = UCase(MonImprimante) Then
MsgBox "Imprimante non trouvée" & vbCr & Nom, Title:="Impression annulée"
Else
'ActiveSheet.PrintPreview
ActiveSheet.PrintOut
ActivePrinter = MonImprimante 'remettre imprimante active
End If
End Sub
Re et merci pour vos réponses.
j'ai réussi a faire l'impression en adaptant cette macro qui fonctionne. (n'étant pas au boulot, j'ai essayer chez moi.).
Sub impression()
' Adaptée à partir du code de PascalXLD
' http://www.excel-downloads.com/forum/46 ... iable.html
Dim I As Integer
Dim MonImprimante As String
Dim Nom As String
Sheets("Feuil2").Activate
' Call Macro2
Range("A1").CurrentRegion.Select
ActiveSheet.PageSetup.PrintArea = _
ActiveCell.CurrentRegion.Address
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
MonImprimante = ActivePrinter 'récupérer imprimante active
On Error Resume Next
For I = 0 To 9
Nom = "HP Photosmart 1245 series sur ne0" & I & ":"
Application.ActivePrinter = Nom
If UCase(ActivePrinter) = UCase(Nom) Then Exit For
Next I
On Error GoTo 0
'If UCase(ActivePrinter) = UCase(MonImprimante) Then
' MsgBox "Imprimante non trouvée" & vbCr & Nom, Title:="Impression annulée"
'Else
' ActiveSheet.PrintPreview
'ActiveSheet.PrintOut
With ActiveSheet.PageSetup
'Application.ActivePrinter = Nom
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = "toto &D &T"
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0.47244094488189)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
ActiveWindow.SelectedSheets.PrintOut Copies:=2, ActivePrinter:= _
Nom, collate:=True
End With
ActivePrinter = MonImprimante 'remettre imprimante active
' End If
End Sub
Cependant j'ai changer le nom de l'imprimante (normalement c'est HP Photosmart 2570 series)et ça imprime quand même, peut-être que l'erreur viens de moi mais je ne trouve pas.
Bonsoir
Et si tu remets le test cela imprime quand même ?
If UCase(ActivePrinter) = UCase(MonImprimante) Then
MsgBox "Imprimante non trouvée" & vbCr & Nom, Title:="Impression annulée"
Else
With ActiveSheet.PageSetup
.
.
.
End With
ActivePrinter = MonImprimante 'remettre imprimante active
End If
End Sub
C'est une macro utilisée pour sélectionner une imprimante sur le réseau de n'importe quel ordinateur
oui, ça me met le message d'imprimante non trouvé et des que je la ferme, ca imprime , bizarre...
mais en mettant une condition:
Nom = "HP Photosmart 2580 series sur ne0" & I & ":"
Application.ActivePrinter = Nom
If Nom <> "HP Photosmart 2570 series sur ne0" & I & ":" Then Exit For
ça a l'air de fonctionner ( ça n'imprime vraiment qu'avec 2570)mais c'est quand même bizarroïde, enfin, je trouve.
je l'essaierais au boulot pour voir.
En attendant, il n'est pas possible de lancer l'impression en selectionnant l'adresse ip de l'imprimante? ce serait bien et au moins plus aucun soucis.