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

IHM Discussion :

Impression d'un état en plusieurs page PDF avec filtre (Un fichier .pdf par client) [AC-2007]


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Alimentation

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut Impression d'un état en plusieurs page PDF avec filtre (Un fichier .pdf par client)
    Bonjour,

    Je suis nouvel inscrit consultant régulièrement ce forum mais cette fois-ci je bloque sur le problème suivant:

    - je possède dans ma BDD une table "FACTURATION" pour laquelle j'ai une Requête et un Etat nommés: "FACTURE-CONDENSE PAR ARTICLE TOTAL MOIS".
    - la requête me permet de regrouper les produits vendus par client (TIER).
    - l'Etat possède un bouton "Imprimer en PDF" qui lance la "Macro1" (qui exécute le module "SAVE_EN_PDF"))

    Lorsque je lance l'impression en PDF, je devrais obtenir un fichier .pdf par "TIER" avec un nom de fichier différent pour chaque "TIER" en utilisant "strFiltre".
    Ce n'est pas le cas et voici la liste des problèmes:

    • Problème 1 - lorsque je lance l'impression, une fenêtre me demande "Entrer une valeur de paramètre"
    • Problème 2 - je suis obligé d'indiquer le code "TIER" déjà mentionné dans cette fenêtre pour que le processus d'impression se lance
    • Problème 3 - le nom de fichier .pdf proposé ne correspond pas au nom qui devrait être généré sur base de "strFiltre"
    • Problème 4 - le processus se relance pour le même "TIER" en autant de fois que je n'ai de lignes d’articles différents ("CODE") !


    Je n'ai aucune connaissance en VBA et suis donc un bricolo du dimanche en la matière.

    Pourriez-vous me venir en aide ?

    Je joins une version du fichier .mdb en annexe afin que vous puissiez avoir une vue d'ensemble.

    Merci d'avance !



    P.S: j'utilise cette BDD sur Access 2007 et sur Access 2010
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    Bonsoir,
    Problème 1 - lorsque je lance l'impression, une fenêtre me demande "Entrer une valeur de paramètre"
    Problème 2 - je suis obligé d'indiquer le code "TIER" déjà mentionné dans cette fenêtre pour que le processus d'impression se lance
    solution : il faut mettre des guillemets car TIER est de type texte:

    correction dans ANNEXE()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            ' Construire le filtre
            strFiltre = "[TIER] = """ & rst("TIER") & """"
    Problème 3 - le nom de fichier .pdf proposé ne correspond pas au nom qui devrait être généré sur base de "strFiltre"
    solution : les caractères / et : sont interdits pour nommer des fichiers, on va les remplacer par des _

    correction dans ANNEXE() à ajouter juste après strFichierPDF = Format(rst("TIER"), "000") & " " & Now() & ".pdf"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFichierPDF = Replace(Replace(strFichierPDF, "/", "_"), ":", "_")
    conjointement dans PrintAsPDF() strFichierPDF est utilisé (donc vide) dans la procédure:
    DoCmd.OutputTo acOutputReport, strEtat, acFormatPDF, strFichierPDF, blnOpenReader alors que le paramètre strFichier est passé dans le Sub:
    Sub PrintAsPDF(ByVal strFichier As String, ByVal strEtat As String ...

    solution: il faut utiliser le paramètre passé (strFichier)

    correction dans PrintAsPDF()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OutputTo acOutputReport, strEtat, acFormatPDF, strFichier, blnOpenReader
    Problème 4 - le processus se relance pour le même "TIER" en autant de fois que je n'ai de lignes d’articles différents ("CODE") !
    solution: faire une requête basée sur les tiers et non sur la totalité des enregistrements

    correction dans ANNEXE()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	    ' Ouvrir table Facturation
        Set rst = CurrentDb.OpenRecordset("SELECT DISTINCT TIER FROM FACTURATION", dbOpenSnapshot)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Alimentation

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut
    Merci "tee_grandbois" !

    Tout est parfaitement fonctionnel avec les corrections parfaitement documentées.

    Je joint en annexe la version corrigée mais il me reste un seul souci que je ne comprends pas:
    - comment puis-je forcer un chemin de dossier pour envoyer les .pdf ?

    J'ai remarqué que la ligne suivante ne sert à rien. En effet, tous les .pdf sont envoyés dans le dossier "Mes Documents" malgré le chemin indiqué (j'ai testé des chemins différents).
    On peut d'ailleurs commenté cette ligne sans aucun effet.

    La ligne en question dans ANNEXE():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Nom de base du fichier PDF à créer
        strFichier = "C:\Bureau\Test\" & "ANNEXE {0} - {1}.pdf"
    Que faut-il modifier pour y parvenir ?
    Et conserver le nommage des fichiers .pdf comme repris dans la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Le nom du client (TIER) est repris volontairement deux fois dans le nom du fichier pour mes besoins ultérieurs :-)
            strFichierPDF = Format(rst("TIER"), "000") & " " & Format(rst("TIER"), "000") & " " & Format(Date, "dd.mm.yyyy") & ".pdf"
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    bonsoir,
    pourquoi se compliquer ?
    code à supprimer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ' Nom de base du fichier PDF à créer - NE FONCTIONNE PAS :-(
        'strFichier = "C:\Bureau\Test\" & "ANNEXE {0} - {1}.pdf"
    correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            ' Le nom du fichier varie en fonction du client (TIER)
            ' Le nom du client (TIER) est repris volontairement deux fois dans le nom du fichier pour mes besoins ultérieurs :-)
            strFichierPDF = "C:\Bureau\Test\" & "ANNEXE " & rst("TIER") & "-" & rst("TIER") & " " & Format(Date, "dd.mm.yyyy") & ".pdf"

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Alimentation

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut
    J'ai effectué les corrections mais j'ai toujours un problème:

    1) Avec l'ancienne ligne de code suivante, cela fonctionne mais les fichiers sont placés dans "Mes Documents" car il n'y a pas de chemin défini; ce qui est normal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFichierPDF = Format(rst("TIER"), "000") & " " & Format(rst("TIER"), "000") & " " & Format(Date, "dd.mm.yyyy") & ".pdf"
    2) Avec la ligne suivante incluant un chemin de répertoire, le processus s'arrête avec message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFichierPDF = "C:\Bureau\Test\" & "NDE_Client_" & rst("TIER") & "-" & rst("TIER") & " " & Format(Date, "dd.mm.yyyy") & ".pdf"
    Message d'erreur pour le module "PRINT_EN_PDF":
    Nom : ERR-001.png
Affichages : 1167
Taille : 6,8 Ko
    Nom : ERR-002.png
Affichages : 1264
Taille : 35,0 Ko

    J'ai essayé différentes choses y compris de mettre le chemin directement dans le module "PRINT_EN_PDF" mais cela ne fonctionne pas non plus.


    PS: j'ai volontairement commenté la ligne suivante car j'ai remarqué avec "l'info express" que cela me transformait: "C:\Bureau\Test\" en "C_\Bureau\Test\"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFichierPDF = Replace(Replace(strFichierPDF, "/", "_"), ":", "_")
    La dernière version de mon fichier Access est en annexe.

    Merci pour votre aide !
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    "C:\Bureau\Test\" est-ce bien un chemin correct ?
    en général le chemin de Bureau est : C:\Users\NomDeLUtilisateur\Desktop
    il faut regarder dans les propriétés du dossier Test le chemin réel

    PS: j'ai volontairement commenté la ligne suivante car j'ai remarqué avec "l'info express" que cela me transformait: "C:\Bureau\Test\" en "C_\Bureau\Test\"
    oui, il faut l'enlever ce code

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

Discussions similaires

  1. [WD10] imprimer un état de plusieurs pages
    Par yann_72 dans le forum WinDev
    Réponses: 0
    Dernier message: 05/05/2008, 10h20
  2. Réponses: 2
    Dernier message: 07/08/2007, 16h24
  3. [IHM] Forcer l'impression d'un état sur une page
    Par NiKoTiNe dans le forum IHM
    Réponses: 2
    Dernier message: 17/07/2007, 06h41
  4. impression d'un blob sur plusieurs pages
    Par maamar1979 dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/05/2006, 13h38

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