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 :

Enregistrement des états d'une table sous PDF


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 36
    Points
    36
    Par défaut Enregistrement des états d'une table sous PDF
    Bonjour à tous,

    J'ai besoin de générer des fichiers PDF à partir d'un état pour tout un table ACCESS (2000 environ)

    Pour cela j'ai créer une routine VBA qui parcoure les enregistrement de ma table et pour chaque enregistrement , j'ouvre l'état , l'enregistre en PDF puis ferme l'état:
    Voici mon code, une routine parcoure la table et pour chaque enregistrement j'ouvre l'état avec une clause where en faisant appel à la fonciton PrintITDEtoPDF2007 que j'ai créer

    Le soucis est que dès la deuxième itération, le fichier sortie PDF est toujours identique (celui attendu pour l'enregistrement n°2) comme si l'état ne s'actualisait pas.

    Si j'exécute manuellement la macro, au bout de la troisième iteration, l'état affiché ne correspond pas à ce que la macro enregistre avec le :
    DoCmd.OutputTo acOutputReport, "Fiche Découpe telier", acFormatPDF,

    Existe t'il une commande pour rafraichir l'état?
    Ai je la bonne méthode pour générer le fichier PDF?

    Merci de votre aide

    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
     
    Sub GenerationPDF()
    'procédure mettant à jour l'ensemble des fiches non obsolètes en PDF sur le réseau
    Dim strSQl
    Dim rs As DAO.Recordset
    strSQl = "SELECT [Découpe ].NoFich, [Découpe ].Version, [Découpe ].[N°client JDE], [Découpe ].[Référence ORACLE], [Découpe ].[Fiche obsolete]" & _
    "FROM [Découpe ]" & _
    "WHERE ((([Découpe ].NoFich) <> 0) And (([Découpe ].[Fiche obsolete]) = False))"
     
     
    Set rs = CurrentDb.OpenRecordset(strSQl)
     
    rs.MoveFirst
     
    Do While Not rs.EOF
     
     
    PrintITDEtoPDF2007 rs.Fields(0), rs.Fields(1), rs.Fields(2), rs.Fields(3)
     
    Debug.Print rs.Fields(0)
    Debug.Print rs.RecordCount
    rs.MoveNext
    Loop
     
    End Sub
    Public Sub PrintITDEtoPDF2007(ByVal intIT As Long, ByVal intDE As Long, ByVal strCustomerID As String, ByVal strItem As String)
    'https://msdn.microsoft.com/VBA/Access-VBA/articles/report-object-access
     
    Dim strWhereClause As String
    Dim i As Integer
    strWhereClause = "[NoFich] = " & intIT & " AND [Version] = " & intDE
    Debug.Print strWhereClause
     
    DoCmd.OpenReport "Fiche Découpe  PDF", acViewPreview, , strWhereClause
    i = 0
     Debug.Print Reports![Fiche Découpe  PDF]![NoFich].Value
      Debug.Print Reports![Fiche Découpe  PDF]![Version].Value
     
    'BOucle pour attendre que le pdf charge
    Do While Not Reports![Fiche Découpe  PDF]![Version].Value = intDE
     
     
    DoCmd.OpenReport "Fiche Découpe  PDF", acViewPreview, , strWhereClause
    i = i + 1
    If i > 10000 Then
    MsgBox "error"
    End If
     
    Loop
     
    DoCmd.OutputTo acOutputReport, "Fiche Découpe  Atelier", acFormatPDF, "\\mondossier\" & intIT & "_" & intDE & "_" & strItem & "_" & strCustomerID & ".pdf"
    'DoCmd.Close acReport, "Fiche Découpe  Atelier"
     
     
    DoCmd.Close acReport, "Fiche Découpe  PDF"
    End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    On peut pas rafraichir un état. Il faut le fermer puis le rouvrir.
    C'est plus prudent de faire cela avec les formulaires aussi.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 36
    Points
    36
    Par défaut
    Bonjour
    Merci pour votre réponse

    J'ai modifié mon code afin de ouvrir l'état , l'enregistrer sous PDF puis fermer l'état sur toutes enregistrement de ma table (2000répetiions à faire)

    Les 20 premiers enregistrements marche correctement puis j'ai un message d'erreur d'exécution '3420'

    "L'objet est incorrect ou n'est plus défini"

    Effectivement quand je retourne dans mon menu access, il ne reste plus que les tables qui apparaissant (les états et requete ont comme disparu et je dois fermer et rouvrir ma base afin d'y acceder à nouveau (cf PJ)
    Nom : menu_non_defini.png
Affichages : 313
Taille : 63,7 Ko


    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
    Option Compare Database
    Public Sub PrintITDEtoPDF2007(ByVal intIT As Long, ByVal intDE As Long, ByVal strCustomerID As String, ByVal strItem As String)
     
    Dim strWhereClause As String
    Dim i As Integer
    strWhereClause = "[NoFich] = " & intIT & " AND [Version] = " & intDE
    Debug.Print strWhereClause
     
    DoCmd.OpenReport "Fiche Découpe   PDF", acViewPreview, , strWhereClause
    i = 0
     Debug.Print Reports![Fiche Découpe   PDF]![NoFich].Value
      Debug.Print Reports![Fiche Découpe   PDF]![Version].Value
     
     
     
    DoCmd.OpenReport "Fiche Découpe   PDF", acViewPreview, , strWhereClause
     
     
    DoCmd.OutputTo acOutputReport, "Fiche Découpe   PDF", acFormatPDF, "\\C:\Users\Documents\PDF Client2\" & intIT & "_" & intDE & "_" & strItem & "_" & strCustomerID & ".pdf"
    'DoCmd.Close acReport, "Fiche Découpe  Atelier"
     
     
    DoCmd.Close acReport, "Fiche Découpe   PDF"
     
    End Sub
    J'ai tester mon code en Local sur mon PC ---> Aucune erreur
    Lorsque je passe sur le réseau cela ne fonctionne plus

    Des idées?

    merci pour votre aide précieuse

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Bizarre ton truc.
    On dirait qu'un problème réseau qui "détruit" les objets de la base.
    Essaye en découpant ta BD en frontale (tous sauf les tables) et dorsale (seulement les tables) (il y a un assistant pour cela) et vois si tu as encore le problème.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Vois aussi si en réduisant le nombre de pdf ça marche.
    Du genre 1 à 10, puis 1 à 15, puis 1 à 20 pour valider que c'est bien le nombre qui pose un problème.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [AC-2003] enregistrement des données d'une table vers une autre
    Par kovrov dans le forum Access
    Réponses: 1
    Dernier message: 26/12/2010, 10h45
  2. enregistrement des logs dans une table mysql
    Par ferjani.kais dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/11/2007, 08h58
  3. [Conception] Enregistrer des tags dans une table ?
    Par Spylberg dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/07/2007, 12h54
  4. Enregistrer des données dans une table à partir du code
    Par Ragnarok85 dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2007, 13h03
  5. enregistrer des variables dans une table via requete sql
    Par Echizen1 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/09/2006, 15h15

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