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 :

Exportation en pdf qui patine [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut Exportation en pdf qui patine
    Bonjour le forum,

    J'ai une table avec des prix spéciaux pour des clients. Je souhaite exporter en pdf la liste de ces prix pour chaque client.
    Pour le faire, j'ai écrit le code suivant qui ouvre l'état "Exportation", change le filtre, et l'exporte en pdf.

    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
     
     
    strCheminDeSauvegarde = "C:..."
     
    strSQL = "SELECT DISTINCT tbl_Prix.Code, tbl_Prix.Branche, tbl_Prix.Code & [Branche] AS Concatenation FROM tbl_Prix;"
     
    Set cnc = CurrentProject.Connection
    rst.Open strSQL, cnc, adOpenDynamic, adLockReadOnly
     
    DoCmd.Echo False
     
    DoCmd.OpenReport "rpt_Exportation", acViewPreview
     
    While Not rst.EOF
    '    Debug.Print rst("Concatenation")
        With Reports("rpt_Exportation")
            .Filter = "tbl_Prix.Code & tbl_Prix.Branche = '" & rst("Concatenation") & "'"
            .FilterOn = True
            .FilterOnLoad = True
            strNomDuFichier = Reports("rpt_Exportation").CodeClient & "-" & Reports("rpt_Exportation").NomClient & "-" & Reports("rpt_Exportation").Pays & ".pdf"
    '    Debug.Print strCheminDeSauvegarde & strNomDuFichier
        DoCmd.OutputTo acOutputReport, "rpt_Exportation", "PDF", strCheminDeSauvegarde & strNomDuFichier
        End With
        rst.MoveNext
    Wend
    DoCmd.Echo True
     
    rst.Close
    Set cnc = Nothing: Set rst = Nothing
    Mon problème est le suivant. En pas à pas, le code fonctionne sans problème. Par contre, dès que je veux lancer l'exécution complète, le code patine. Le filtre est bien changé, mais la sauvegarde se fait toujours avec le même nom de fichier.
    Au total, je devrais avoir un peu plus de 300 pdf à la fin. Est-ce que la charge est trop lourde? Est-ce que je devrais mettre une "pause" quelque part?

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Le parcours de la table va plus vite que la création du fichier.

    place une temporisation après ton output. (boucle quelconque)

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    nb. non testé

    Peut-être essayer avec un DoEvents après la commande "output"
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    L'instruction DoCmd.OutputTo est peut-être exécutée avant que les changements sur les propriétés de l'état ne soient prises en compte.

    De mémoire j'ai déjà eu ce problème et pour le corriger j'ai ouvert l'état en mode design, modifié les propriétés, enregistré l'état puis réouvert en préview avant l'instruction OutputTo.

    Le fait de le réouvrir à provoqué la réévaluation de la requête avec les filtres modifiés.

    Cette méthode est à tester dans votre contexte.

    Cordialement,
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Citation Envoyé par Tonioyo Voir le message
    ... j'ai ouvert l'état en mode design, ...
    et surtout prier pour que neiluj26 ne souhaite jamais livrer un mde/accde.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Après avoir vu ton code, regarde cette variante.

    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
    strCheminDeSauvegarde = "C:..."
     
    strSQL = "SELECT DISTINCT tbl_Prix.Code, tbl_Prix.Branche, tbl_Prix.Code & [Branche] AS Concatenation FROM tbl_Prix;"
     
    Set cnc = CurrentProject.Connection
    rst.Open strSQL, cnc, adOpenDynamic, adLockReadOnly
     
    DoCmd.Echo False
     
     
     
    While Not rst.EOF
     
            myFilter = "tbl_Prix.Code & tbl_Prix.Branche = '" & rst("Concatenation") & "'"
            DoCmd.OpenReport "rpt_Exportation", acViewPreview,,myfilter
     
            doevents
     
            strNomDuFichier = Reports("rpt_Exportation").CodeClient & "-" & Reports("rpt_Exportation").NomClient & "-" & Reports("rpt_Exportation").Pays & ".pdf"
     
        DoCmd.OutputTo acOutputReport, "rpt_Exportation", "PDF", strCheminDeSauvegarde & strNomDuFichier
            docmd.close acreport,"rpt_Exportation"
        rst.MoveNext
    Wend
    DoCmd.Echo True
     
    rst.Close
    Set cnc = Nothing: Set rst = Nothing
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    Merci pour les réponses et pardon pour le retard. Je vais les tester de ce pas.

    Par contre, je n'ai pas compris la remarque sur accde/mde... je suppose qu'on ne peut pas ouvrir un formulaire en mode design avec un accde? Je débute encore, hein?

  8. #8
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Oui loufab à raison. Il est possible d'enregistrer une base de donnée en format accde/mde. Le format mde est la même chose que l'accde. accde est une extention récente, à partir d'Access 2007.

    Une base en format accde/mde interdit toute modification d'objet présent dans la base et supprime les modules de codes écris en haut niveau (écris par le développeur en VBA). il reste le code compilé dans cette base, il est donc executable. Il s'agit de code MSIL (Microsoft Intermediate Language).

    Pour faire simple il s'agit du langage machine qui serra directement executé par Access. Ce code lui même n'est donc plus modifiable.

    Il est donc très important de prendre beaucoup de précautions, surtout faire beaucoup de copies de sauvegarde de la base source.
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  9. #9
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Points : 116
    Points
    116
    Par défaut
    Ok, donc la solution de loufab marche impeccablement. Merci pour votre aide.

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

Discussions similaires

  1. Version de Crystal report qui exporte en PDF
    Par franck SEFIC dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 13/08/2009, 17h49
  2. recherche scanner qui exporte en PDF
    Par arnaud_verlaine dans le forum Périphériques
    Réponses: 2
    Dernier message: 21/12/2006, 13h27
  3. [CR] Exporter en PDF a partir d'un CRViewer
    Par Job dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 17/09/2004, 16h02
  4. [CR][VB] comment exporter en pdf ?
    Par speed034 dans le forum SDK
    Réponses: 1
    Dernier message: 29/04/2004, 14h54
  5. [CR] exporter en PDF
    Par Nathy dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2002, 09h27

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