Imprimer un état Access en pdf

Signaler
Messages postés
2
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
20 juillet 2004
-
Messages postés
1
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
7 décembre 2004
-
Bonjour à tous !

Urgent ! (bien entendu ;-) )

Je cherche à imprimer des états access en pdf de façon automatique à partir de vba :) . Par exemple, je souhaite boucler sur 10 régions, et constituer 10 pdf dont les noms seront déterminés par code (région1, région2...).
La solution Snapshot ne peut être utilisée pour mon client.
Grand merci d'avance !

7 réponses

Messages postés
1
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
13 mai 2004

Salut,

Je c pas trop si ca peut t'aider mais j'ai toruvé une solution pour mon problème similaire au tien.

G téléchargé PDFCreator avec lequel tu peux créer un fichier pdf et l'enregistrer dans un répertoire prédéfini dans les options.

Une fois fois dans vba tu lances une impression avec pdfcreator
tu endors ton programme quelques seconde (le temps de l'impression...)
pour tu fais une copie (filecopy) du fichier pdf créer en lui donnant le nom que tu ve (path+nomfichier.pdf)

puis tu supprimes le premier fichier pdf (le source)

Voilà c ma méthode si tu ve le programme vba dis le moi.

A+

maximumdev
Messages postés
3
Date d'inscription
jeudi 16 août 2001
Statut
Membre
Dernière intervention
29 juin 2004

:-p Salut les Amis !

Ce code est déjà sur Vbfrance mais je ne sais plus où !

Il fonctionne en automatique directement implanté des un module d'accès. Moi j'utilise ce code tous les jours en auto dans des bases d'analyse commerciale. Il est utilisé par un autre module qui utilise une table où sont paramétré tous les états avec pour chaque leur filtre. Ex de table:
NomEtat | Filtre | CheminRep | NomFichier |
Cette table est réutilisé par un autre module qui vérifie sur le réseau où est imprimé en pdf les états leurs date de modif et si il y à un pdf non mis à jour alors la base m'envoi automatiquement un mail en me signalant directement l'état (pdf) non mis à jour. Ci-joint le code pour imprimer un état en pdf (voir directement la dernière fonction en bas du code)

'--------------------------------------

'Ce code est libre d'utilisation (c'est pour ça qu'il est
'sur vbfrance !
'
'L'utilisation est très simple : Il suffit de taper "Reg." dans
'votre code, et il est affiché les fonctions possibles à utiliser.

'[Reg.Ecrit]
' Reg.Ecrit sert à créé ou modifier une clé.
' Le premier paramètre, est les clés, il suffit de choisir dans la liste qui s'affiche toute seule.
' Le deuxième est l'endroit ou écrire.
' Le troisième la valeur
' Le dernier, le format :
' REG_String : Format chaine de caractère normale (exemple : "C:\WINDOWS\wt\updater\wcmdmgrl.exe -launch")
' REG_Number : Un nombre style integer (exemple : 43574)
' REG_Binary : Un code binaire (exemple : 1) pratique pour enregistrer une configuration.
' REG_Expand_String : Une chaine de caractère "expandable" (exemple : "%windir%\calc.exe")
' Vous n'êtes pas obligés de préciser le format, il le sera automatiquement sur REG_String par défault
'
'Exemple 1 : Reg.Ecrit HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "C'est un test", REG_String
' Mettra "C'est un test" dans la valeur par défault de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
'Exemple 2 : Reg.Ecrit HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\wcmdmgr", "C:\WINDOWS\wt\updater\wcmdmgrl.exe -launch"
' Mettra le programme de mise à jour automatique de Windows au démarrage (Sous Windows XP au moins)

'[Reg.Lit]
'Les deux premiers paramètres fonctionnent comme pour Reg.Ecrit
'Le troisième est le texte renvoyé en cas d'erreur. Par défault ce texte est "Erreur"
'Exemple 1 : MsgBox Reg.Lit(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId")
' Vous donnera votre numéro de license de Windows
'Exemple 2 : MsgBox Reg.Lit(HKEY_LOCAL_MACHINE, "Clé\Qui\Existe\Pas")
' Vous renvoyera "Erreur", car la clé n'éxiste pas.
'Exemple 3 : MsgBox Reg.Lit(HKEY_LOCAL_MACHINE, "Clé\Qui\Existe\Pas", "Inconue")
' Vous renvoyera "Inconue", car la clé n'éxiste pas.

'[Reg.Suprime]
'Vous permet de suprimer une clé dans la base de registre.
'Fonctionne de la même façon que Reg.Lit, sauf que Reg.Suprime ne renvoie rien.

Public Enum HKEYs
HKEY_CLASSES_ROOT = 0
HKEY_CURRENT_USER = 1
HKEY_LOCAL_MACHINE = 2
HKEY_USERS = 3
HKEY_CURRENT_CONFIG = 4
End Enum

Public Enum REG_TYPE
REG_String = 0
REG_Number = 1
REG_Binary = 2
REG_Expand_String = 3
End Enum

Public Sub Ecrit(HKEY As HKEYs, Endroit As String, Valeur As String, Optional Type_Of_Reg As REG_TYPE = REG_String)
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
Select Case Type_Of_Reg
Case 0: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_SZ"
Case 1: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_DWORD"
Case 2: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_BINARY"
Case 3: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_EXPAND_SZ"
End Select
End Sub

Public Function Lit(HKEY As HKEYs, Endroit As String, Optional Retourner_En_Erreur As String = "Erreur") As String
On Error Resume Next
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
Lit = WSHShell.RegRead(HK(HKEY) & Endroit)
If Err <> 0 Then Lit = Retourner_En_Erreur
End Function

Public Sub Suprime(HKEY As HKEYs, Endroit As String)
On Error Resume Next
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.RegDelete HK(HKEY) & Endroit
End Sub

Private Function HK(HKEY As HKEYs) As String
Select Case HKEY
Case 0: HK = "HKCR"
Case 1: HK = "HKCU"
Case 2: HK = "HKLM"
Case 3: HK = "HKEY_USERS"
Case 4: HK = "HKEY_CURRENT_CONFIG"
End Select
End Function

'==== Fonction d'impression en PDF
Public Function EtatToPdf(NomEtat As String, CheminNomExtFichier As String, ConditionEtat As String)
'La commande est EtatToPdf "AgCumul", "c:\temp\AgCumul.pdf"
Ecrit HKEY_CURRENT_USER, "Software\Adobe\Acrobat PDFWriter\PDFFileName", CheminNomExtFichier, REG_String
DoCmd.OpenReport NomEtat, acViewNormal, , ConditionEtat
End Function

'-------------------------------------------

En espérant que cela peut t'aller !!!
Messages postés
3
Date d'inscription
jeudi 16 août 2001
Statut
Membre
Dernière intervention
29 juin 2004

:-p Salut les Amis !

PS: Nb d'états généré et controlé automatiquement par jour.

- 1 pdf est ~ 5 à 20 pages
généré ~ 893 états (pdf) / jours
Messages postés
2
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
20 juillet 2004

Merci pour cette réponse.
Je n'ai pas pu consulter mes messages et je découvre que l'on a répondu ! Cette réponse est interessante mais mon client veut utiliser acrobat 6 pour pouvoir y intégrer des modèles... Et puis ma demande à évoluer. Je créé finalement des snapshots que je transforme ensuite en pdf. Et le problème est que maintenant le client veut pouvoir assembler les snp en auto.

A+
Messages postés
16
Date d'inscription
jeudi 1 février 2001
Statut
Membre
Dernière intervention
9 novembre 2004

Tu as trouver une solution Guitare ???

webcyril
Messages postés
16
Date d'inscription
jeudi 1 février 2001
Statut
Membre
Dernière intervention
9 novembre 2004

Tu as trouver une solution Guitare ???

webcyril
Messages postés
1
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
7 décembre 2004

J'utilise Win2Pdf pour cela.

La routine suivante permet de choisir Win2Pdf temporairement et d'imprimer directement dans un fichier nommé...
Sub prvImprimer(stDocName As String, stCondition As String, Optional ByVal stParName As String, Optional ByVal stFileName As String)

Dim strCurrentPrinter As String

On Error GoTo Err_prvImprimer

' preparer un nom de fichier standard si aucun nom n'est fourni
If IsMissing(stFileName) Or stFileName = "" Then
If IsMissing(stParName) Or stParName = "" Then
stParName = ""
Else
stParName = " " & stParName & " "
End If
End If
stFileName = DocPath & stDocName & stParName & Format(Now(), " yyyy mm dd") & ".PDF"


' Sauvegarder l'imprimante par défault et changer sur Win2Pdf
strCurrentPrinter = GetDefaultPrinter
SetDefaultPrinter "Win2PDF"
SaveSetting "Dane Prairie Systems", "Win2PDF", "PDFFileName", stFileName

DoCmd.OpenReport stDocName, acNormal, , stCondition

MsgBox "Le fichier " & stFileName & " a été crée !"
' revenir à l'imprimante par défaut
SetDefaultPrinter strCurrentPrinter

Exit_prvImprimer:
Exit Sub

Err_prvImprimer:
MsgBox Err.Description
Resume Exit_prvImprimer

End Sub

Function TestWin2PdfInstalled() As Boolean
Dim Pr As String
TestWin2PdfInstalled = InStr(UCase(GetPrinters()), "WIN2PDF") <> 0
End Function
--------------

A+