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 :

Imprimer un Report dans un PDF page par page [AC-2010]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut Imprimer un Report dans un PDF page par page
    Bonjour à tous,
    J'ai déjà trouvé des éléments sur le site, mais ils ne résolvent pas complètement mes problèmes

    Je veux créer autant de pdf que de page, les pdf étant nommés à partir d'un numéro d'ordre, ID

    je me déplace dans les enregistrement de ma base via un recordset, je récupère la valeur de ID et pour chaque enregistrement j'appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub tracePdfUnParUn(stJustOne As String)
    Dim sWhere As String
     
    'ci desous tenté à tout hazard ...
    'sWhere = "[ID]=" & Chr(34) & stJustOne & Chr(34)
    sWhere = "[id]=" & stJustOne
     
    DoCmd.OpenReport "A4_Portrait", acViewPreview, "", sWhere, acWindowNormal
    DoCmd.SelectObject acReport, "A4_Portrait" 'apparament cette ligne devrait résoudre mon problème, mais non ...
    DoCmd.OutputTo acOutputReport, "A4_Portrait", acFormatPDF, "E:\Fiches_regard\Labo\" & "Nompdf" & stJustOne & ".pdf", False
    DoCmd.Close acForm, "A4_Portrait", acSaveNo
     
    End Sub
    ce code marche très bien pour la partie export pdf et nom de fichier, mais la page imprimée est toujours la même, la 1ère.

    Pourtant, j'ai bien un champ ID dans l'état et dans la table, mais la clause where ne marche pas.

    J'ai donc essayé de me déplacer dans l'état :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'ci dessous tenté pour déplacement d'une page
    DoCmd.GoToPage, 2
     
    'ci dessous tenté pour déplacement d'un enregistrement
    DoCmd.GoToRecord acDataReport, "A4_Portrait", acNext, 1
    Mais avec ces deux instruction, access me dit que la méthode n'est pas encore disponible.

    Je pense qu'il faut que je récupère l'objet report et que je le pilote directement, mais je ne sais pas comment le récupérer

    des idées ?

    merci

    Gérald

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    A mon avis, c'est ton critère Where qui n'est pas pris en compte.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Salut,
    Citation Envoyé par marsouin_89 Voir le message
    Bonjour,

    A mon avis, c'est ton critère Where qui n'est pas pris en compte.
    ça c'est sur, mais ce que je veux savoir, c'est pourquoi ?

    Lui avait le même problème, résolu avec le select
    http://www.access-programmers.co.uk/...d.php?t=199978

    ici une solution tellement confuse que je n'arrive pas à l'appliquer :
    http://www.developpez.net/forums/d91...partir-d-etat/

    Gérald

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Salut
    du nouveau, mais ça ne marche toujours pas :
    J'ai réussi à chopper mon formulaire, et j’espérais pouvoir le piloter directement
    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
    Public Sub tracePdfUnParUn(stJustOne As String)
     
    Dim MyMe  As Report_A4_portrait
     
    'je laisse tomber  le where, je veux piloter avec le MyMe
    DoCmd.OpenReport "A4_Portrait", acViewPreview, , , acWindowNormal
     
    Set MyMe = Reports![A4_Portrait]
    'suivant ne marche pas (lecture seule)
    'MyMe.CurrentRecord = 2
    MyMe.Page = 2 'marche, mais CurrentRecord reste à 1
     
    DoCmd.OutputTo acOutputReport, "A4_Portrait", acFormatPDF, "E:\Fiches_regard\Labo\" & "Nompdf" & stJustOne & ".pdf", False
    DoCmd.Close acForm, "A4_Portrait", acSaveNo 'L'état ne se ferme pas
     
    End Sub
    Je dois préciser que je suis sous seven 64, et qu'il y a un evenement _page sur l'état (qui dessine dessus, un dessin différent pour chaque page)

    J'ai remarqué que l'état ne s'aui tjamais fermé, même avant que je le pilote avec MyMe

    dans cette histoire, jamais j'aurai imaginé qu'une fonctionalité aussi idiote, un PDF par page, me prenne autant de temps ...

    Gérald

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Projeteur DAO, developpeur
    Inscrit en
    Octobre 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Projeteur DAO, developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2012
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par gegematic Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.Close acForm, "A4_Portrait", acSaveNo 'L'état ne se ferme pas
    J'ai remarqué que l'état ne s'est jamais fermé, même avant que je le pilote avec MyMe
    Tout était la, et je ne l'ai compris qu'une fois avoir réussi par un chemin alambiqué, en créant un table temporaire ne contenant qu'un enregistrement ...
    Il fallait remplacer acForm par acReport,
    ainsi le fonctionnement redevient bon, l'état se ferme et on peut le ré-ouvrir avec une nouvelle clause where ...

    Je pense que l'échec des autres solution venait de là, l'état était toujours en lecture seule car déjà ouvert.

    Je peste contre l'aide VBA, ou la liste des constantes valides n'est pas donnée, c'est comme ça qu'on se fait piéger en copiant des bouts de code ça et la


    A toutes fin utile le code qui marche :

    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
    Private Sub PdfUnParUnWhere_Click()
     Call TraceChaqueW
     
    End Sub
     
    Private Sub TraceChaqueW()
     
    Dim db As dao.Database
    Dim rec As dao.Recordset
    Dim Champs As Fields
    Dim Buffer As Variant
    Dim Buffer2 As Variant
    Dim Nompdf As String
    Dim SqlStr As String
     
     
    Set db = CurrentDb
    Set rec = db.OpenRecordset("Source_principale", dao.dbOpenForwardOnly)
    DoCmd.SetWarnings False
    Do While Not rec.EOF
        Set Champs = rec.Fields
        Buffer = Trim(Champs("ID")) '
        'tracePdfUnParUnW (Buffer)
        Buffer2 = Trim(Champs("Type_Ouvrage")) '
        Nompdf = Buffer2 & "_" & Buffer
     
     
        tracePdfUnParUnW Buffer
     
       rec.MoveNext
    Loop
     
    DoCmd.SetWarnings True
    Set rec = Nothing
    Set db = Nothing
     
     
    End Sub
     
    Public Sub tracePdfUnParUnW(ByVal stJustOne As String)
    Dim sWhere As String
    Dim MyMe  As Report_A4_portrait
     
    'ci desous au cas ou le critère est une chaine
    'sWhere = "[ID]=" & Chr(34) & stJustOne & Chr(34)
    sWhere = "[id]=" & stJustOne
     
    DoCmd.OpenReport "A4_Portrait", acViewPreview, "", sWhere, acWindowNormal
    DoCmd.SelectObject acReport, "A4_Portrait" 'apparament cette ligne devrait résoudre mon problème, mais non ...
    DoCmd.OutputTo acOutputReport, "A4_Portrait", acFormatPDF, "E:\Fiches_regard\Labo\" & "Nompdf" & stJustOne & ".pdf", False
    DoCmd.Close acReport, "A4_Portrait", acSaveNo
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Imprimer un Etat en PDF page par page
    Par tijan dans le forum IHM
    Réponses: 1
    Dernier message: 25/11/2010, 19h35
  2. Création PDF page par page
    Par wbraveheart dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/08/2009, 19h33
  3. Sélection du texte dans un pdf créé par latex puis ps2pdf
    Par Gwindor dans le forum Mise en forme
    Réponses: 6
    Dernier message: 11/08/2009, 17h02
  4. Réponses: 4
    Dernier message: 13/01/2009, 13h21
  5. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22

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