Impression automatique en pdf

Résolu
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 14 déc. 2009 à 10:41
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 15 déc. 2009 à 11:10
Bonjour.
J'ai développé un projet où je commande une impression d'une page avec un 'Printform'
Seulement j'aimerais aussi faire une sauvegarde soft de cette page, j'ai donc pensé utiliser 'Studio PDF' afin de générer la page en PDF. Voila le code que j'utilise après l'impression sur feuille:
[i]
Application.ActivePrinter = "Studio PDF"
Frm_rapport.PrintForm/i

Seulement voila, une boite de dialogue apparait me demandant où enregistrer le fichier, quel nom...
J'aimerais que cela se fasse automatiquement, sans manipulation de la part de l'opérateur, mais je n'ai pas trouvé comment entrer le chemin et le nom du fichier pdf.
J'ai essayé pas mal de choses mais ca ne marche pas. J'espere vraiment que vous pourrez m'aider.
Merci d'avance

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 déc. 2009 à 10:48
Ouais... Fais toujours la chasse à ces "on error, etc...". Il est très rare qu'ils ne soient pas remplaçables par autre chose de plus rationnel et prudent ! Ce sonty souvent des cache-m**de !
Le code que tu avais tutilisé n'est tout simplemùent pas un code VB6, mais un code VBA (risquiaiot pas de fonctionner !)
Sous VB6, existent l'objet Printer et la collection Printers, à utiliser prudemment ainsi (exemple) :

Dim prt As Printer, impricherchee as string
impricherchee = "..nom de l'impri........."
For Each impri In Printers
  If impri.DeviceName = impricherchee Then
    Set Printer = impri
    Exit For
  End If
Next
if printer.devicename <> impricherchee then
  msgbox "alerte : votre impri " & impricherchee & " n'a pas été trouvée !"
  ' et tes instructions d'abandon, exit sub, par exemple
end if
' et des instrructions d'impression

C'est plus propre et tu sauras au moins où tu vas, ainsi
Et cesse de copier des bouts de code trouvés ici et là, sans t'assurer de leur justesse et, surtout, qu'il correspondent à ton langage de développement
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 déc. 2009 à 11:10
Bonjour,
Application.ActivePrinter n'est pas du VB6 (le présent thème)... sous VB6, on connait par contre l'objet Printer et sa propriété DeviceName
Sous quoi développes-tu donc ?

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
14 déc. 2009 à 11:30
Heu... oui en effet, en fait je me suis rendu compte que l'imprimante par défaut c'était mise sous 'Studio PDF'...
Donc en effet cette ligne n'est pas prise en compte... mais il ne m'a pas mis d'erreur donc pour moi ca fonctionnait.

Alors existe t'il une fonction qui me permette de changer l'imprimante, et ensuite avec Studio PDF (ou un autre logiciel d'impression PDF), de faire l'impression virtuel en automatique?
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
15 déc. 2009 à 09:13
Personne n'a d'idées?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 déc. 2009 à 09:22
Confirme nous d'abord que tu développes bien sous VB6 et non sous VBA (d'Excel ou de Word, par exemple). Car il est très étonnant que tu n'aies pas eu un message d'erreur sous VB6 (à moins que tu n'aies ajouté un malheureux On Error Resume Next dans ton appli, que je te demanderais alors de faire sauter pour y voir plus clair !)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
15 déc. 2009 à 09:49
Oui donc je suis bien sous VB6.
En effet, j'avais la ligne On error resume next, je l'avais oubliée celle ci, en fait c'est une vieille applic que je retouche donc...
en l'enlevant il m'a bien mis une erreur '424 Un objet est requis'. Donc tu avais bien raison, ce n'est pas la bonne fonction...
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
15 déc. 2009 à 10:49
En fait j'ai trouvé une solution, alors après est ce la meilleur, vous me direz bien, j'utilise maintenant le logiciel PDFCreator, on peut le configurer pour qu'il fasse l'enregistrement en automatique. Voila mon code :

'Impression PDF
For Each imprimante In Printers
If imprimante.DeviceName = "PDFCreator" Then
Set Printer = imprimante
SetPrinter = True
End If
Next imprimante
Frm_rapport.PrintForm
'Passage impression papier
For Each imprimante In Printers
If imprimante.DeviceName = "Dell 3100cn" Then
Set Printer = imprimante
SetPrinter = True
End If
Next imprimante
Frm_rapport.PrintForm
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
15 déc. 2009 à 10:52
lol ok merci ucfoutu, bon a ce que je vois ton code ressemble au mien donc c'est ok, merci ^^
En effet j'aurais dû faire plus attention, mais en fait comme j'avais pas d'erreur et à cause de cette imprimante par défaut, j'avais pas tout saisie ^^
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 déc. 2009 à 10:55
Voilà !
Te reste juste une précaution :
Relever l'imprimante existante avant ton traitement puis la restituer une fois ton traitement terminé (de sorte, en revenant à la situation originelle, à "restituer les lieux en l'état")

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
15 déc. 2009 à 11:10
oui très bonne idée, je note. merci pour ton aide ^^
0
Rejoignez-nous