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 :

Créer plusieurs PDF à partir d’un état


Sujet :

IHM

  1. #21
    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.

    Ma mémoire ce réveille toujours trop tard … Cette fois-ci je me suis envoyer un courriel donc je devrai te répondre dans l'après-midi.

    Désolé.

    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.

  2. #22
    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.

    J'ai fait une mini BD de démo.
    CreerPDF.zip
    Voici un exemple de code au cas ou tu ne pourrais pas la lire. Elle a été créée en Access 2019.
    Merci à tee_grandbois pour le rappel du close qui fait toute la différence.

    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
    Private Sub CreerPlusieursPDF()
        Dim db As DAO.Database: Set db = CurrentDb
        Const NOM_RAPPORT As String = "rptData"
        Dim r As DAO.Recordset: Set r = db.OpenRecordset("tblData", dbOpenSnapshot)
        Dim repertoireFic As String: repertoireFic = CurrentProject.Path
     
        Dim nomFic As String
        Dim infoFic As String
     
        Do While Not r.EOF
            nomFic = NOM_RAPPORT & "_" & r![Valeur] & ".pdf"
            infoFic = repertoireFic & "\" & nomFic
     
            If Dir(infoFic) <> "" Then
                Kill infoFic
            End If
     
            Call DoCmd.OpenReport(NOM_RAPPORT, acViewPreview, , "[Valeur]=""" & r![Valeur] & """") 'ouvre le rapport
            Call DoCmd.OutputTo(acOutputReport, NOM_RAPPORT, acFormatPDF, infoFic, , , , acExportQualityPrint) 'crée le PDF à partir du rapport ouvert.
            Call DoCmd.Close(acReport, NOM_RAPPORT)
            r.MoveNext
        Loop
     
        r.Close: Set r = Nothing
        db.Close: Set db = Nothing
    End Sub
    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. #23
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous ...
    je vous passe en PJ ma base.

    marot_r je ne comprend pas ton code.
    en ouvrant la base, clic sur "récap", puis sur "récap salaire collectif et individuel".
    renseigne la société que tu veux via la liste déroulante, renseigne les date 01/06/20 et 30/06/20, puis j'aimerais qu'en cliquant sur le bouton "Aperçu récap par salarié" mon état Récap_pour_justificatif_salaire s'ouvre et imprime individuellement (1 fichier par personne présent sur le récap), en les nommant automatiquement.
    Fichiers attachés Fichiers attachés

  4. #24
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    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 004
    Points : 24 595
    Points
    24 595
    Par défaut
    Bonjour,

    Le code proposé fait exactement ceci :

    1) liste tous les employés
    2) pour chaque employé
    ouvre le report avec les données de l'employé courant
    crée le nom du futur PDF -suivant l'employé courant
    supprime le fichier s'il existe déjà.
    fait une sortie du report avec le nom du PDF
    ferme le report
    passe au prochain employé
    3) Quitte

    Après vérification de ta base, il faudrait plutôt se baser sur la source de données du report pour établir la liste des employés .
    Ta liste des employés à traiter (1) doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT N°_Employé FROM R_Récap_entre_date_et_société;
    Et pour l'ouverture du report :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport(NOM_RAPPORT, acViewPreview, ,  "[N°_Employé]=" & r![N°_Employé] )
    Mettre un docmd.echo false au début de la procédure et à la fin un docmd.echo true pour éviter l'affichage inutile du preview.

    Pourquoi tu répètes les colonnes de tes tables dans cette requête ? Les mettre 1 seule fois suffit.

    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

  5. #25
    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.

    marot_r je ne comprend pas ton code.
    Que ne comprends-tu pas ?

    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.

  6. #26
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Bonjour, marot_r, loufab
    c'est simple. Le vba je débute et je m'y perd rapidement ...
    La base que j'ai mis en exemple est une base que j'ai créé moi même, avec des infos vba piqué a droite à gauche, sans forcement les comprendre tous ...

    De tous les posts de ce fil, je ne sais plus quoi essayer comme code. Il faut modifier, remplacer ... je m'y perds

    Quelqu'un pourrais m’écrire le code à insérer ?

  7. #27
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Re,
    après bidouillage j'ai ce code :
    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
     Dim db As DAO.Database: Set db = CurrentDb
        Const NOM_RAPPORT As String = "Récap_pour_justificatif_salaire"
        Dim r As DAO.Recordset: Set r = db.OpenRecordset("T_Contrats", dbOpenSnapshot)
        Dim repertoireFic As String: repertoireFic = CurrentProject.Path
     
        Dim nomFic As String
        Dim infoFic As String
     
        Do While Not r.EOF
            nomFic = NOM_RAPPORT & "_" & r![N°_Employé] & ".pdf"
            infoFic = repertoireFic & "\" & nomFic
     
            If Dir(infoFic) <> "" Then
                Kill infoFic
            End If
     
            Call DoCmd.OpenReport(NOM_RAPPORT, acViewPreview, , "[N°_Employé]=" & r![N°_Employé]) 'ouvre le rapport
            Call DoCmd.OutputTo(acOutputReport, NOM_RAPPORT, acFormatPDF, infoFic, , , , acExportQualityPrint) 'crée le PDF à partir du rapport ouvert.
            Call DoCmd.Close(acReport, NOM_RAPPORT)
            r.MoveNext
        Loop
     
        r.Close: Set r = Nothing
        db.Close: Set db = Nothing
    End Sub
    Il fonctionne !! maintenant je dois trouver pour que les PDF s'enregistre dans un chemin spécifique et pas sur le bureau

  8. #28
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Et j'aimerais aussi que les fichiers créés soient nommé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "NOM" &"_"& "Prénom" &"_"& "récap salaire du" &"_"& "date de début" &" et"& "dans de fin"

  9. #29
    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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim repertoireFic As String: repertoireFic = "x:\unchemin" 'ici mettre le chemin que tu veux
    "NOM" &"_"& "Prénom" &"_"& "récap salaire du" &"_"& "date de début" &" et"& "dans de fin"
    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomFic=r![Nom] &"_" & r![Prenom] &"_" & "récap salaire du"  & "_" & format(r![dateDebut],"yyyy-mm-dd") & " et" & format(r![dateFin], "yyyy-mm-dd")
    Perso je ferai plutôt quelque chose comme "Recap salaire 2020-01-01 - 2020-01-31 Nom Prenom" histoire que les documents restent groupés par période.

    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.

  10. #30
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Bonsoir,
    je suis arrivé a faire aller les fichiers sur le chemin que je souhaite, mais je n'arrive pas a renommer le fichier comme je le veux ...
    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
     Dim db As DAO.Database: Set db = CurrentDb
        Const NOM_RAPPORT As String = "Récap_pour_justificatif_salaire"
        Dim r As DAO.Recordset: Set r = db.OpenRecordset("T_Contrats", dbOpenSnapshot)
        Dim repertoireFic As String: repertoireFic = "C:\Users\PC - Bureau\Desktop\a envoyer\"
     
        Dim nomFic As String
        Dim infoFic As String
     
        Do While Not r.EOF
            nomFic = r![N°_Employé] & ".pdf"
            infoFic = repertoireFic & "\" & nomFic
     
            If Dir(infoFic) <> "" Then
                Kill infoFic
            End If
     
            Call DoCmd.OpenReport(NOM_RAPPORT, acViewPreview, , "[N°_Employé] = " & r![N°_Employé]) 'ouvre le rapport
            Call DoCmd.OutputTo(acOutputReport, MON_RAPPORT, acFormatPDF, infoFic, , , , acExportQualityPrint)  'crée le PDF à partir du rapport ouvert.
            Call DoCmd.Close(acReport, NOM_RAPPORT)
            r.MoveNext
        Loop
     
        r.Close: Set r = Nothing
        db.Close: Set db = Nothing
    End Sub

  11. #31
    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.

    C'est cette ligne qu'il faut changer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomFic = r![N°_Employé] & ".pdf"
    Et je t'ai mis le modèle suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomFic=r![Nom] &"_" & r![Prenom] &"_" & "récap salaire du"  & "_" & format(r![dateDebut],"yyyy-mm-dd") & " et " & format(r![dateFin], "yyyy-mm-dd")
    Quelle est la partie que tu ne comprends pas ?

    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.

  12. #32
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    C'est bien a ce niveau que j'ai modifié le code, mais ca ne m'affiche une fenetre "erreur d éxécution 3265, element non trouvé dans cette collection" et en cliquant sur débogage, ça surligne la modification
    Nom : Capture.PNG
Affichages : 68
Taille : 29,4 Ko

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    erreur 3265: quand un élément est non trouvé dans une collection, cela veut dire qu'un champ n'existe pas dans la table (ou la requête), la plupart du temps (pour ne pas dire tout le temps !), c'est une erreur humaine, donc, vérifie le nom de tes champs: le champ Non_dusage_Employé semble contenir une faute de frappe à mon avis
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #34
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Bonjour,
    effectivement, j'ai bien fait une faute de frappe.j'ai refait avec la bonne orthographe, et j'ai le même message d'erreur ...
    est ce que les champs nom_dusage_employé et prénom_employé doivent être présent dans mon etat ?

  15. #35
    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.

    Non, ils doivent être dans les champs du recordset source et exactement avec le même nom.

    Ici : Set r = db.OpenRecordset("T_Contrats", dbOpenSnapshot).
    Tu prends en entrée ta table T_Contrats, est-ce qu'elle contient les noms et prénoms de tes employés ?

    Si non, ton problèmes vient de là.
    Dans ce cas créer une requête qui met en jointure la table des contrats et celle des employés pour aller "pêcher" l'information manquante.
    Si tu en as une qui fait déjà cela tu peux la réutiliser.
    Une fois cette requête crée ou trouvée, sert-en comme source du recordset.

    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.

  16. #36
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    dans T_Contrat, je me sert de N°_Sécu_Employé pour pouvoir puis je fais Me.N°_Employé = Me.N°_Secu_Employé.Column(4)

  17. #37
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Dans ce cas créer une requête qui met en jointure la table des contrats et celle des employés pour aller "pêcher" l'information manquante.
    comment faire une requete avec jointure ??

  18. #38
    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
    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.

  19. #39
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    et après il faudra que je prenne la requete en entrée plutot que la tableT_Contrats ?

  20. #40
    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.

    Oui, ça va ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set r = db.OpenRecordset("NomTaRequete", dbOpenSnapshot)
    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-2007] Créer plusieurs PDF à partir d’un état
    Par garavous dans le forum VBA Access
    Réponses: 15
    Dernier message: 19/01/2022, 19h53
  2. Créer un PDF à partir de plusieurs fichiers
    Par Oscar02 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/04/2019, 14h55
  3. [AC-2016] Créer plusieurs PDF à partir d’un état Access
    Par Emi1988 dans le forum Access
    Réponses: 4
    Dernier message: 04/07/2018, 15h17
  4. [Imagick] Créer un pdf à partir de plusieurs images de dimensions différentes
    Par Garra dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 12/10/2011, 19h31
  5. créer un pdf à partir d'un formulaire
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 04/05/2006, 22h38

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