Automatiser l’impression d’un état en PDF via PDFCreator
Dans l’article Imprimer en PDF avec PDFCreator, vous avez pu voir comment, manuellement, transformer un état Access en document PDF. Et si maintenant on automatisait la procédure à l’aide de Visual Basic ?
Le principe
PDFCreator est livré avec un composant COM (qui s’installe automatiquement en même temps que le logiciel). Ceci est intéressant dans la mesure où ce composant COM est fait pour être exploité par programmation… et bien sûr en VBA.
La première chose à faire est donc de référencer ce composant dans votre base de données. Pour cela :
- Ouvrez Visual Basic Editor (
ALT
+F11
, par exemple). - Cliquez sur le menu Outils / Références.
- Dans la liste qui se présente, trouvez la bibliothèque PDFCreator et cochez-la.
Le code VBA
Vous pouvez maintenant recopier le code VBA ci-dessous dans un module standard de votre base de données :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
Option Compare Database Option Explicit ' Ne pas oublier de cocher la bibliothèqe PDFCreator ' dans le menu Outils / Références de Visual Basic Editor ' API Windows pour faire une temporisation en millisecondes Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ' Constantes pour les temporisations Private Const maxTime = 10 ' en secondes Private Const sleepTime = 250 ' en millisecondes ' --- ' IMPRESSION D'UN ETAT EN PDF ' --- ' Entrée : strReportName <- Nom de l'état à imprimer en PDF ' strWhere <- Clause WHERE filtrant l'état (facultatif) ' strPDFName <- Nom du fichier PDF à générer (facultatif) ' strDirectory <- Chemin de stockage du fichier PDF (facultatif) ' Public Sub SaveAsPDF( _ ByVal strReportName As String, _ Optional ByVal strWhere As String = "", _ Optional ByVal strPDFName As String = "", _ Optional ByVal strDirectory As String = "") ' Quelques variables... Dim pdfc As PDFCreator.clsPDFCreator Dim DefaultPrinter As String Dim c As Long Dim OutputFilename As String ' Instancier un nouvel objet PDFCreator Set pdfc = New clsPDFCreator ' Paramétrer l'objet PDFCreator With pdfc .cStart "/NoProcessingAtStartup" .cOption("UseAutosave") = 1 .cOption("UseAutosaveDirectory") = 1 ' Chemin de destination ' Par défaut : dossier 'Mes documents' de l'utilisateur If strDirectory = "" Then strDirectory = Environ("USERPROFILE") & "Mes documents" End If .cOption("AutosaveDirectory") = strDirectory ' Nom du fichier PDF à générer .cOption("AutosaveFilename") = _ IIf(strPDFName = "", strReportName, strPDFName) ' Format de sauvegarde (0 = PDF) .cOption("AutosaveFormat") = 0 ' Mémoriser l'imprimante par défaut ' et définir PDFCreator à la place DefaultPrinter = .cDefaultPrinter .cDefaultPrinter = "PDFCreator" .cClearCache ' Imprimer l'état DoCmd.OpenReport strReportName, acViewNormal, , strWhere .cPrinterStop = False End With ' Temporisation c = 0 Do While (pdfc.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime)) c = c + 1 Sleep 200 Loop ' Nom du fichier PDF produit OutputFilename = pdfc.cOutputFilename ' Réinstaller l'imprimante d'origine With pdfc .cDefaultPrinter = DefaultPrinter Sleep 200 .cClose End With ' Attendre jusqu'à ce que PDFCreator soit supprimé de la mémoire Sleep 2000 ' Vérifier si le fichier a été créé If OutputFilename = "" Then MsgBox "Création du fichier PDF." & vbCrLf & vbCrLf & _ "Une erreur s'est produite : temps écoulé !", vbExclamation + vbSystemModal End If End Sub |
Il s’agit en fait du code d’exemple livré avec PDFCreator, sur lequel j’ai fait quelques petites modifications :
- J’ai traduit les commentaires, j’en ai aussi ajouté quelques-uns.
- J’ai ajouté quelques paramètres optionnels qui devraient faciliter l’utilisation du code dans Access.
Exemple 1
La procédure SaveAsPDF
peut recevoir jusqu’à 4 paramètres, dont seul le 1er est obligatoire (le nom de l’état). Voici un premier exemple de code pour tester tout ça :
1 2 3 |
Sub TestPDF01() SaveAsPDF "rpt Clients" End Sub |
Dans ce 1er exemple, on fournit seulement le nom de l’état à imprimer (une liste de clients). On obtient un fichier PDF qui s’appellera rpt Clients.pdf
, et qui sera placé dans le dossier Mes documents de l’utilisateur.
Exemple 2
Dans Access, on filtre souvent les états pour n’afficher qu’une partie des enregistrements. Ceci se fait via l’argument « Condition Where » de l’instruction DoCmd.OpenReport
. La procédure SaveAsPDF
permet de passer ce paramètre également. Voici, par exemple, comment imprimer le même état que précédemment, mais en n’affichant que les clients dont le nom contient la lettre A :
1 2 3 |
Sub TestPDF02() SaveAsPDF "rpt Clients", "[Nom Client] LIKE '*A*'" End Sub |
Exemple 3
Si vous souhaitez modifier le nom du fichier PDF final, alimentez le 3ème paramètre. Ça donne :
1 2 3 |
Sub TestPDF03() SaveAsPDF "rpt Clients", "", "Liste des clients" End Sub |
Notez qu’il n’est pas utile d’ajouter l’extension « .pdf« . Vous obtiendrez ici un fichier nommé Liste des clients.pdf
.
Exemple 4
Et si vous souhaitez enregistrer le fichier PDF dans un dossier spécifique, alimentez le 4ème paramètre :
1 2 3 |
Sub TestPDF04() SaveAsPDF "rpt Clients", "", "Liste des clients", "C:\Mes documents PDF" End Sub |
Est-ce qu’il est possible de développer VBA en utilisant » MSaccess » et « Nuance PDF converter »? Mon client me dit qu’il n’arrive pas a trouver le code pour utiliser Nuance en VBA?
Sur le site de Nuance Converter, je n’ai pas trouvé d’API de programmation. Ça impliquerait effectivement qu’il n’y a de solution native pour piloter Nuance Converter.
Les pistes que j’aurais seraient de modifier l’imprimante par défaut (activer Nuance), et d’imprimer un état ensuite.
Bonjour,
J’aimerai pouvoir depuis une application access, générer depuis un document PDF déjà existant, qui contient plusieurs pages, un fichier pour chaque page de ce document.
Pour le moment j’ai trouvé le code qui permet d’ouvrir à l’écran ce fameux fichier PDF, mais depuis, j’ai la bras ankylosés à force de ramer sur le sable de mon seuil d’incompétence.
Alors je lance un HELP de chez HELP.
Yannick
Si le PDF est déjà créé, Access n’a aucun outil pour extraire chaque page (ce n’est pas son métier).
Un outil comme PDFtk peut sans doute faire l’affaire (on peut l’utiliser via une interface graphique ou en ligne de commande).
Bonjour,
J’ai access 2013 et j’utilise votre code et il fonctionne très bien pour la version 1.7.3 de pdfCreator, par contre pour la nouvelle version 2.0.2 il ne fonctionne pas. Pensez vous à l’occasion pouvoir nous aider avec un module adapté à la nouvelle version 2.0.2
Merci encore pour vos excellents tutos
Merci pour le retour, je vais tester sur la nouvelle version.
Pour info : ça coince à quel endroit du code ?
ça coince en premier lieu ici
‘ Instancier un nouvel objet PDFCreator
Set pdfc = New clsPDFCreator
bien que dans la référence j’ai modifié la référence en cochant la nouvelle fournit avec pdfcreator
Si ça coince aussi tôt, c’est que les noms ou les types d’objets ont été changés. Je vais télécharger une version récente dès que possible, et je posterai un article sur le sujet.
bonjour
j’utilise ce type de macro depuis longtemps et j’ai le même problème qu’Elie sur le pc d’une personne ayant la version plus recente de PDF Creator. Avez vous pu trouver la bonne commande ?
big merci
fmi
J’attends encore un peu avant d’adapter les articles : depuis la version 1.9 (environ) de PDFCreator, ils sont en train de faire évoluer leur interface COM, donc le modèle objet utilisé en VBA. Le problème est que cette interface n’est pas encore stabilisée, les choses peuvent encore évoluer.
Bonjour,
J’ai deux petites questions, est-il possible d’ouvrir automatiquement le fichier créer ?
Serait-il difficile t’intégrer une fonction envoie par mail ?
Je vous remercie
Christophe
Voici quelques éléments :
Merci beaucoup Hervé.
Je vais essayer ça.
Aboutitrite > Cet autre article du blog devrait plus convenir à tes besoins (le nom du PDF est variable dans l’exemple donné en lien).
Merci pour tous,
Mon problème est, je veux imprimer en pdf chaque enregistrement d’état qui prend la clé comme nom du fichier pdf. je n’arrive pas !
Merci de votre aide.
Stéphane Fortin > Généralement, ce genre de phénomène est dû à un problème de références. Est-ce que la référence PDFCreator est correctement cochée ? Est-ce qu’il y a des références signalées « manquantes » ?
Petite sitation particulière, aussitôt que je crée le module avec le script ci-haut mentionné pour imprimer mes États Access avec PDFcreator j’obtiens un message d’erreur « Erreur de compilation dans l’expression ‘Mid([T_Personne.NM],9,3)' ». Semble bien que la fonction Mid() ne repond plus avec le script en question.
Assitôt que je supprime le module, je peux ouvrir mes états qui contiennent des Mid().
Y a-t-il une solution pour rectifier le problème?
Merci beaucoup!
Stéphane
Florent > Merci pour le retour. C’est bien aussi quand ça marche ! 🙂
Un petit commentaire non pas pour soulever un problème mais pour dire que tout a bien fonctionné sous Access2003/Win XP. Un état à imprimer en PDF en le découpant en 291 états renommés, en appliquant l’exemple 4 avec une boucle associée pour définir le nom de chq pdf, boucle sur une table contenant les 291 noms. Bravo et merci
2M > Ce ne sera sans doute pas une boucle
For Each
, mais plutôt une boucleWhile
. L’idée est de lancer l’impression d’un état filtré pour chaque document PDF séparé. Pas clair, hein ?! Concrètement : si j’ai 1000 clients, et que 30 m’intéressent (1 page chacun), j’invoqueSaveAsPDF
avec le paramètrestrWhere
(voir exemple 2) de manière à filtrer sur 1 seul client à la fois. Dans le cas des clients, le filtre se fera sur le numéro de client par exemple.Dans ton cas, quel critère permettra d’isoler chaque page ?
Hervé Inisan > Oui exactement, je souhaite imprimer chaque page de l’etat sur un PDF. J’ai essayé de modifier le code VBA mais je n’y arrive pas.
Il me faudrait ce code dans une boucle For Each…
2M > En fait, au sens Access, un état est un seul document avec un ensemble de pages. J’imagine que la question est plutôt : « comment imprimer séparément les différentes pages d’un état ? »
Bonjour,
Comment faire pour generer un PDF par état ? au lieu d’un PDF avec tous les états.
Merci pour votre aide.
juanma > A priori, ça veut dire que le contexte dans lequel l’instruction a été appelé n’est pas bon. En plus clair : au moment où le OpenReport est invoqué, il est impossible d’imprimer un état, ou l’état n’est pas disponible. Est-ce que l’état existe bien ? N’est pas ouvert en mode Création ?
« la commande ou l’action open.report n’est pas disponible pour le moment ».
C’est ce que j’obtiens avec access 2003.
J’aimerais savoir ce qui cloche.
merci pour ce billet si intéressant.
Fabien > Merci pour le retour !
Cette fois ci c’est la bonne 🙂
Pour que l’état soit généré en couleur et non en noir et blanc :
…/
DefaultPrinter = .cDefaultPrinter
.cDefaultPrinter = « PDFCreator »
.cClearCache
‘Pour forcer le mode couleur
‘Ouverture en preview mode caché du rapport
DoCmd.OpenReport strReportName, acViewPreview, , strWhere, acHidden
‘Forçage du parametre couleur pour l’imprimante
Reports(strReportName).Printer.ColorMode = acPRCMColor
‘ Imprimer l’état
DoCmd.OpenReport strReportName, acViewNormal, , strWhere
‘Fermeture du rapport
DoCmd.Close acReport, strReportName, acSaveNo
/….
@+
stp Annule mon commentaire précédent.
Celà devait être un coup de chance.
Aprés de nouveaux essais le fichier est toujours en noir et blanc 🙁
Désolé
@+
Bonjour,
Merci à Hervé pour ce source. Toujours aussi futé 😉
Pour le soucis de génération du document en noir & blanc alors qu’il devrait être en couleur, la commande Application.Printer.ColorMode = acPRCMColor juste avant le DoCmd.OpenReport strReportName, acViewNormal, , strWhere régle le probléme dans mon cas.
@+
Un grand merci a Herve pour son code save as pdf que j’ai redecoupe sans vergogne. Et merci a NooB pour l’adresse du magicien Lebans. J’avoue que n’ayant rien compris, c’est vraiment par acquis de conscience que j’ai installe les 2 fichiers dll dans le meme dossier que ma base et au miracle :Ca fonctionne; J’ai beau relancer le code 12 fois pas de bug , je suis presque confiante dans la 13eme fois. A bientot et merci
Le NooB > Effectivement, les outils de Lebans sont généralement très bien, c’est une forme de vaudou qui marche. 🙂
Le seul truc, depuis quelque temps : Lebans étant « retiré d’Access », ces outils ne vont sans doute plus évoluer, et le support n’est plus assuré.
Si le code plante, l’impression est redirigée sur l’imprimante papier, et encore, pas toujours =).
Je crois que c’est lié à la version d’Access. Pour ma part, cela arrivait de façon aléatoire, je pouvais imprimer une 20aine de pdf, et planter sur le 21ème. Parfois le premier. Redémarrage de la machine, rien n’y fait. Le lendemain matin, ça peut remarcher…. Limite vaudou, l’exorcisme c’est deux posts plus haut =)
TuneUp > Curieux effectivement. C’est un bug que je ne reproduis pas sur ma machine. Est-ce que tu as essayé les toutes dernières versions de PDFCreator, au cas où ?
Pour Sabine et Chachamars
J’utilise 2003 aussi, ainsi que 2002. Pas de « saveaspdf » donc. J’utilisais PDFCreator (routine PDFForge relayée par Cafeine)depuis bien six ans.
Le problème c’est qu’il y a toujours un moment où ça plante et je n’ai jamais trouvé pourquoi… « OpenReport ».. « C’est trop lent » « la commande n’est pas disponible pour l’instant »… Je préfère ne pas penser au temps que j’y ai passé.
Et j’ai trouvé la méthode « Lebans ». Lui part d’un snapshot pour faire un pdf. Simple comme bonjour pour paramétrer le chemin et nom de fichier. Et cerise sur le gâteau, livré avec un outil qui lie deux pdf en un seul.
http://www.lebans.com/reporttopdf.h…
Merci Hervé pour ton code!
J’ai le même soucis que Sabine, je travaille avec Access 2003
et PDFCreator est bien installé.
La tâche est redirigée vers l’imprimante…
Que faire ?
Sabine > PDFCreator est bien installé sur la machine ? (même si ce n’est pas l’imprimante par défaut)
Merci pour ce code qui à l’air simple à priori.
Mais chez moi çà ne fonctionne pas.
Je travaille avec ACCESS 2003.
C’est la commande Openreport qui fonctionne pas : elle imprime l’état sous format papier avec une imprimante qui n’est même pas configurée par défaut ??!!
Pourquoi çà ne fonctionne pas chez moi 🙁
A force de ramer je suis parvenu à quelque chose qui fonctionne (Cf. plus bas); probablement pas très propre, mais ça marche. Le seul défaut que je n’arrive pas à corriger, c’est l’ouverture de la boite de dialogue de pdfCreator autant de fois que j’ai de page (il doit y avoir une option mais je ne trouve pas laquelle).
Merci aux bonnes âmes …
Private Sub Commande98_Click()
Dim Enr As DAO.Recordset
Dim i As String
Dim j As String
Set Enr = CurrentDb.OpenRecordset(« SELECT COLL_Communes_SIBVV.NOM_DOSSIER_Commune, Parcelle_riveraine.Code_parcelle FROM Parcelle_riveraine LEFT JOIN COLL_Communes_SIBVV ON Parcelle_riveraine.Code_INSEE = COLL_Communes_SIBVV.INSEE; », dbOpenDynaset)
Enr.MoveFirst
Do Until Enr.EOF
i = Enr!Code_parcelle
j = Enr!NOM_DOSSIER_Commune
SaveAsPDF « EDIT_FICHE_PARCELLE », (« Parcelle_riveraine.Code_parcelle =' » & i & « ‘ »), i, (« \Rivieredoc_riviereCARTO_RIVIEREATLASFICHES_PARCELLES » + j)
Enr.MoveNext
Loop
End Sub
Bonjour,
Merci pour votre réponse. J’utilise déjà la fonction « where » du SaveAsPDF (j’ai un bouton dans le formulaire, qui déclenche l’impression de l’Etat pour l’enregistrement en cours d’affichage, en utilisant la fonction Me![NomDeChamp_ID]).
Mais ce que je n’arrive pas à faire, c’est de boucler la procédure, en m’inspirant de votre code (trouvé dans « developpez.com ») :
Dim i As Long
DoCmd.OpenReport « Commandes », acViewPreview
For i = 1 To Reports(« Commandes »).Pages
DoCmd.PrintOut acPages, i, i
Next
J’ai tenté ceci :
Dim i As Long
DoCmd.OpenReport « EDIT_FICHE_PARCELLE », acViewNormal
For i = 1 To Reports(EDIT_FICHE_PARCELLE).Pages
SaveAsPDF « EDIT_FICHE_PARCELLE », « [Code_parcelle]= » i, Me![Code_parcelle], (« \Rivieredoc_riviereCARTO_RIVIEREATLASFICHES_PARCELLES » + Me![NOM_DOSSIER_Commune])
Next
Mais ça ne marche pas …
Merci par avance si vous avez une idée.
tijan > Sur le principe, il faut sans doute imprimer 500 fois l’état, en le filtrant à chaque fois sur un critère qui permet d’extraire la bonne page (la clef primaire, j’imagine).
L’exemple 2 de l’article montre comment filtrer. Maintenant, quel serait le champ à utiliser pour le filtre (et son type de données) ?
Bonjour,
J’utilise ce code, très pratique, pour générer des pdf à partir d’Etat Access.
Je voudrais aujourd’hui générer des pdf ‘page par page’ à partir d’un état qui comporte 500 pages, et que chaque pdf prenne le nom de l’élément contenu dans chaque page de l’état. Je n’y arrive pas : auriez vous une idée à me proposer ?
Par avance merci.
J’ai le même problème que tito2009: je n’arrive pas à imprimer en couleur.
Quelquu’un a-t-il trouvé une solution ?
tito2009 > Est-ce que ça marche en changeant directement le réglage de couleur dans les propriétés de PDFCreator (via l’icône Imprimantes du Panneau de configuration) ?
Bonjour Hervé,
Tout d’abord, un grand merci pour les différentes explications données sur ce site.
J’utilise le code fourni pour l’impression d’états au format Pdf. Je constate que le fichier pdf obtenu est en noir et blanc.
J’ai recherché dans l’explorateur d’objets la propriété permettant de paramétrer les couleurs mais je ne l’ai pas trouvée.
D’avance merci pour votre réponse
J’ai essayé les aménagements donnés par Olive, mais rien n’a changé….
j’ai essayé des délais plus longs aussi…..sans résultat….
ce bug est très aléatoire, parce que ça fait plusieurs jours maintenant que tout se passe sans souci !!!!sans aucune intervention de ma part et sans changement de config sur mon poste 😉 bizarre !!!!
Merci encore !
chachamars > Ça viendrait donc d’un problème de PDFCreator, sur l’enchaînement d’états. Est-ce que tu as essayé avec un délai plus long, ou avec les aménagements donnés plus haut par Olive ?
la portion de code qui pose pbm est « docmd.openreport….. »
le message d’erreur est « action ou commande non disponible pour le moment »…
des fois ça ne pose aucun souci, des fois ça bug….
même en redémarrant le pc avant de lancer le traitement ça ne change rien…
De plus, j’ai un souci à la première impression : le logo de PDF creator s’affiche bien près de l’horloge mais avec un point rouge. IL faut donc que j’ouvre le moniteur PDF creator pour cliquer sur le logo de l’imprimante, afin qu’il devienne vert, et mon pdf est alors lancé….les suivants n’ont pas de pbm ensuite..
si je ne fais pas cette manip’, le message « temps écoulé » s’affiche…
Merci d’avance pour vos réponses.
Merci pour vos réponses
chachamars > Quelle est la portion de code exacte qui pose problème ?
Bonjour,
je viens de récupérer ce code pour automatiser l’impression de plusieurs états en pdf.
je parcours une table avec un recordset, chaque ligne repésentant un destinataire. Pour chaque destinataire, je souhaite donc éditer un état en pdf (j’applique donc le filtre destinataire = »rst.fields(0) »…)
il arrive (pas tout le temps mais assez souvent) que le message d’erreur suivant apparaisse « action ouvrir Etat pas disponible »
Savez comment y remédier ? merci d’avance pour vos réponses.
Merci pour votre réponse. J’ai un peu bidouillé et ajouté à la fin de la procédure SaveAsPDF les lignes suivantes (à partir d’infos d’un forum):
pdfc.cClearCache
DoEvents
pdfc.cClose
Set pdfc = Nothing
Ca a l’air de fonctionner normalement.
Merci encore!
Olive > Ça peut être dû à plusieurs paramètres (configuration, bugs éventuels de PDFCreator). Je n’ai pas de solution directe, mais j’essaierais de mettre à jour la version de PDFCreator, dans un premier temps. Je vais pointer le code de mon côté pour voir s’il n’y a pas une variable qui ne serait pas correctement libérée…
Bonjour,
Merci beaucoup pour ce code et les explications!
Je l’utilise pour imprimer un état depuis Access 2002 (sur win xp), mais j’ai un petit souci : aprés chaque impression pdfcreator reste actif et je ne peux imprimer un 2nd état dans la foulée. Par contre quand je supprime pdfcreator de la liste des processus, cela fonctionne à nouveau. Avez-vous une idée de où peut venir le problème?
Merci!
Merci Hervé, ça marche! Je vais maintenant m’attaquer à la suite de mon problème : envoyer automatiquement par mail comme pièce attachée le fichier créé
La route est longue!
Encore merci, l’aide a été précieuse.
Bill
@Bill C’est possible, avec quelques aménagements dans le code. Je viens de poster sur cette page du blog un article qui donne une façon de faire dans Excel.
Bons tests !
Bonjour,
C’est exactement ce que je voudrais faire(paramétrer le nom, le chemin du fichier pdf et ne plus avoir les messages de PDF)…mais sur excel .Pensez-vous que ce soit possible?
Merci
Bill
Tito > Comme l’état n’est pas ouvert à ce stade, on ne peut pas faire référence à un de ses champs. Mais il y a des chances pour que le formulaire sur lequel tu te trouves contienne ce champ. Du coup, si le code VBA se trouve dans le formulaire lui-même, ça donnerait quelque chose comme :
Merci, c’est très utile.
Et si je veux faire comme l’exemple 3 mais que le nom du fichier généré soit le contenu d’un champ de mon état, ça marche comment ?
Merci d’avance
Guillaume > Je ne sais pas si on parle de la même chose mais le nom du PDF peut être modifié par le paramètre
strPDFName
(voir l’exemple 3 notamment).Bonjour,
ces lignes de codes fonctionnent correctement, toutefois, comment peut-on lors de l’impression du pdf, entrer un nom d’enregistrement(avoir le choix)?
merci
Bonjour
J’ai le même problème que SuperBaba. Sur 3 serveurs différents, j’ai utilisé ce code. Seul 1 serveur a bien voulu fonctionner en modifiant les durées de temporisations. Les deux autres m’affichent le message d’erreur. N’y aurait-il pas un paramétrage de PDFCreator pour qu’il soit opérationnel, ou bien peut-on se passer de la temporisation?
> SuperBaba : L’exemple de l’article a été testé sur la même config. De mon côté, j’ai noté quelques instabilités, parfois, dans PDFCreator. Que se passe-t-il si la machine est « fraîchement redémarrée » ? (sous-entendu : PDFCreator n’a pas encore été lancé). Autre piste : augmenter les durées de temporisations, en début de listing.
Bonjour,
Je viens d’installer votre procédure, mais impossible de créer un fichier PDF, j’ai systématiquement le message d’averissement :
» Une erreur s’est produite : temps écoulé ! » et aucun fichier PDF n’apparait dans le répertoire par defaut…
Meci de votre aide
Config: MSacces2003 sur XP-sp2
Bonjour,
merci pour ce bout de code. Cependant pour éviter une page d’erreur (ERROR: syntaxerror OFFENDING COMMAND nostringval) générée systématiquement dans mon fichier PDF, j’ai ajouté cette ligne :
.cOption(« StandardTitle »)=.cOption(« AutosaveFilename »)
et maintenant ça marche.
config: MSACESS97 sur W2K
Pour l’instant, je n’ai pas plus d’éléments. Une info quand même : PDFCreator n’est pas certifié 100% compatible avec Vista, même en version 0.9.5 (la toute dernière actuellement). Les problèmes viennent de la sécurité de Vista qui empêche certaines opérations de PDFCreator (voir ici).
Identique, puisque PDFcreator prend dans tous les cas le dossier par défaut, et le nom de fichier configuré par défaut pour l’enregistrement automatique. J’ai testé plusieurs dossiers et nom de fichier.
Merci de t’interresser à ce problème.
Ca donnerait quoi en changeant le dossier utilisateur de l’exemple (« Mes documents ») par sa version Vista : « Documents » ?
Bonjour,
J’ ai une application access97 sur Vista.
La procédure ‘SaveAsPDF’ modifie bien l’imprimante par défaut, puis la remet, mais, si le fichier .pdf est bien créé, c’est exclusivement en paramétrant PDFCreator en enregistrement automatique, et les paramètres du chemin et du nom de fichier ne sont pas modifiés par les variables strPDFname et strdirectory.
Nota, j’ai bien référencé la bibliotèque PDFcreator.
Pouvez vous m’aider? Merci