IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Automatisation pour generation PDF


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut Automatisation pour generation PDF
    Bonjour,

    J'ai une base de données ACCESS qui me sert à gérer des fiches techniques.
    Lorsque mes fiches sont à jour, j'imprime des PDF de ces fiches que je mets sur mon réseau local, dans un dossier que l'on va appelé Z:/Fiches/

    Elles sont ensuite classées dans 8 sous dossiers en fonction de numéro de la fiche :
    - sous-dossier FT200 : Toutes les fiches dont le numéro commence par FT2xx.pdf
    - sous-dossier FT300 : Toutes les fiches dont le numéro commence par FT3xx.pdf
    - ...
    - sous-dossier FT900 : Toutes les fiches dont le numéro commence par FT9xx.pdf

    Dans ma base, mon numéro de fiche est un numéro à 3 chiffres, et est dans la colonne PFM, de ma table PFM.
    J'ai un état, "FicheParametres", qui est déjà préparé avec tous mes champs.

    J'ai actuellement 359 fiches, et je dois passer un temps fou à génerer ces PDF.
    Je fais du VBA dans Excel, mais dans access je ne connais pas du tout.

    Pourriez vous m'aider pour faire une macro qui me genere toutes mes fiches et me les classe dans les dossiers ?

    Par sécurité, je pense qu'il serait bien de faire un dossier intermédiaire avec la date de génération :
    ex : Z:/Fiches/2012.08.24/FT200/FT201.pdf

    Merci pour votre aide, qui me simplifierai grandement le travail.
    Mikael

  2. #2
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2012
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Il est possible de récupérer les noms de dossiers, de fichiers...
    bref de manipuler les fichiers sur le réseau local.

    Un document peut t'aider :

    http://warin.developpez.com/access/fichiers/

    il est bien fait...
    Plume27

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Merci Plume27,

    Cela va m'être utile.

    Ensuite il me faudra faire pour une boucle sur toutes les lignes de ma table PFM, puis de faire un PrintOut.
    Je vais essayer.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    J'ai trouvé un script qui me permet de générer un pdf de mes etats.
    Mais il me met tous les etats sur le même PDF, J'essaye de modifier pour faire une boucle et generer un PDF à chaque etat, mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    94
    95
    96
    97
    98
    99
     
     
    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
    Public Sub SaveAsPDF( _
      ByVal strReportName As String, _
      Optional ByVal strWhere As String = "", _
      Optional ByVal strPDFName As String = "", _
      Optional ByVal strDirectory As String = "")
     
    ' ---
    ' 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)
    '
     
      ' 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\access\"
                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
     
    Sub TestPDF02()
      SaveAsPDF "FicheParametres_2", "[Nom Client]"
    End Sub

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2012
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Je ferais :
    - un formulaire d'édition, dans lequel je ferais une zone de liste
    avec affichage des documents qu'il y a dans un répertoire donné, avec
    mise à jour par chargement du formulaire (événement au chargement), comme cela la liste est remise à jour à chaque chargement de formulaire, (programmation Vba avec les données du document que je vous ai indiqué)
    - et dans ce formulaire un bouton d'édition qui prend le nom du fichier sélectionné dans la zone de liste et lance le script pour générer le pdf avec
    l'indication ou il doit aller se ranger en reprenant toujours le document de Warin.

    Mais je n'ai peut-être pas tout compris, et ce n'est qu'une proposition.

    Plume27

Discussions similaires

  1. Application php pour Generation automaique de documents word PDF
    Par CompteHamza dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/04/2014, 16h48
  2. Automatisation pour combiner des jpeg en pdf
    Par ridertart dans le forum Langage
    Réponses: 1
    Dernier message: 17/02/2008, 19h32
  3. Imprimante pour generation de pdf
    Par c.langlet dans le forum Reports
    Réponses: 1
    Dernier message: 24/10/2007, 12h00
  4. Automatiser génération fichier PDF
    Par psyco2604 dans le forum ASP
    Réponses: 4
    Dernier message: 24/11/2004, 10h27
  5. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo