Impression papier d'une liste de fichier (pdf) avec choix imprimante

Tjs la même erreur 91

Je remets mon code que j'ai détaillé:

Sub Imprimer_Liste_Fichier_PDF_2()

Dim prNorm As String 'imprimante par défaut au départ
Dim prTemp As String 'imprimante temporaire pour imprimer ma liste de fichier pdf
Dim i As Integer

'La ligne ci-dessous me pose encore souci
prNorm = Cells(3, 3) '= ??? Comment récupérer automatiquement le nom de l'actuelle imprimante Windows par défaut pour pouvoir la remettre par défaut en final?

prTemp = Cells(2, 2) '= par exemple "Microsoft Print to PDF, pour pas gaspiller de papier

CreateObject("WScript.Network").SetDefaultPrinter prTemp 'Modifier l'imprimante par défaut Windows

        For i = 1 To 2 'Boucle pour imprimer la liste mentionnée en colonneA (seulement 2 pour l'exemple).

            CreateObject("Shell.Application").Namespace(0).ParseName(Cells(i, 1).Value).InvokeVerb ("Print") 'Imprimer le fichier pdf mentionné dans la liste colonneA sur imprimante temporaire

        Next i

Application.Wait (Now + TimeValue("00:00:05")) 'Pause pour être sûr que la dernière impression est lancée avant de remettre l'imprimante initiale

CreateObject("WScript.Network").SetDefaultPrinter prNorm 'Remettre l'imprimante initiale

MsgBox ("IMPRESSION TERMINE")

End Sub

Voici un nouvel essai :

Sub Imprimer_Liste_Fichier_PDF_2()

Dim i As Integer

with activesheet
    CreateObject("WScript.Network").SetDefaultPrinter .cells(2, 2).value 'temporaire
    For i = 1 To 2 'Boucle pour imprimer la liste mentionnée en colonneA (seulement 2 pour l'exemple).
        CreateObject("Shell.Application").Namespace(0).ParseName(.Cells(i, 1).Value).InvokeVerb ("Print") 'Imprimer
    Next i
    CreateObject("WScript.Network").SetDefaultPrinter .cells(3, 3).value 'initiale
end with

MsgBox ("IMPRESSION TERMINE")

End Sub

Ca devrait marcher.

Pour remettre l'imprimante par défaut, il faut mettre son nom en dur dans le code ou sinon reprendre l'idée d'Arturo83 et, si activeprinter renvoie un chemin complet, prendre la dernière partie :

t = split(chemin, "\")

prnorm = t(ubound(t))

Cdlt,

Je crois que j'ai trouvé le "loup":

quand je remplace ‪la cmd d'impression par un msgbox pour afficher la valeur de la cellule:

 MsgBox (Cells(i, 1))

Ca me donne:

?‪C:\pdf1.pdf

au lieu de :

‪C:\pdf1.pdf

Je ne sais pas d'où sort ce point d'interrogation mais c'est surement là que ca coince.

Etrange en effet mais j'ai l'impression que ça vient de la cellule si je comprends bien

t = split(chemin, "\")

prnorm = t(ubound(t))

Erreur de compilation: tableau attendu

Avec ca:

prNorm = Application.ActivePrinter
prNorm = Left(prNorm, Len(prNorm) - 10) 

Ca fonctionne!!!

Question: Pourquoi la fonction with dans les solutions que tu m'as donné?

Super si ça marche.

With permet de cibler l'objet sur lequel on travaille. C'est une façon de clarifier le code (on identifie bien l'objet) et aussi de la raccourcir en évitant la répétition du même terme à plusieurs endroits.

Rechercher des sujets similaires à "impression papier liste fichier pdf choix imprimante"