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

Access Discussion :

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


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 Créer plusieurs PDF à partir d’un état
    Bonsoir le forum,
    je cherche un code VBA me permettant su click de pouvoir générer et sortir en PDF des factures suite une sélection par coche sur un formulaire et et les stocker dans un fichier sur mon bureau qui se nomme "à traiter".
    L'état est celui que je me sert pour sortir en pdf les factures individuelles depuis le formulaire de saisie des factures.

    J'ai donc du faire une requete union.

    Après plusieurs tests pour sortir en pdf mon lot de facture, mes factures sélectionnées par la coche, sont regroupées sur l'état, je n'ai pas 2 pièces, mais 1 pièces avec dans le "détail", mes lignes des 2 factures ... je sais pas si je m'exprime bien ... la capture d'écran sera peut être plus parlante et explicite.

    Nom : Capture.PNG
Affichages : 262
Taille : 91,0 Ko

    dans l'attente du coup de main et/ou d'un debut de piste. J'ai bien trouvé plusieurs code que j'ai essayé d'adapté, mais en vain.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    A première vue pour générer 2 pdf séparés pour les 2 factures, je ferais 2 appels à OpenReport :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DoCmd.OpenReport "R_Facture", acViewPreview, , "ID_Facture=34"
    DoCmd.OutputTo acOutputReport, , "PDF", "d:\facture34.pdf" ' génère le pdf correspondant à l'état affiché..
     
    DoCmd.OpenReport "R_Facture", acViewPreview, , "ID_Facture=36"
    DoCmd.OutputTo acOutputReport, , "PDF", "d:\facture36.pdf"
    https://warin.developpez.com/access/pdf/#LIII-B

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 le forum, User
    Mon état est lié à ma requete union "R_U1_Imprim_facture_Num_EtOu_Selection". Donc dans le code, j'ai modifié "R_Facture".
    mais j'ai un message debogage ...
    De plus, si je comprends bien le code, sur click, seul les factures 34 et 36 s'ouvriront. moi j'aimerais que se soient les factures que je selectione qui s'ouvre. la dans l'exemple j'avais mis la 34 et 36, mais si je veux la 35, 37 et 39 ... ??

  4. #4
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Pour info, j'ai un code pour l'impression des mes factures individuelle au départ du formulaire F_Facture.
    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
    Private Sub Commande81_Click() 'Aperçu facture individuelle
     
     ' Nommer automatiquement un fichier si impression en pdf
        DoCmd.OpenReport "E_Facture_par_num", acPreview
     
    Dim LValue As String 'converti la date francaise en date anglaise
    LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
    Dim sFileName As String  'construction du nom du fichier
        sFileName = Me.Client_1.Column(1) & "_" & Me.Type_de_doc & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
                  ' sFileName = "C:\Users\pcbse\OneDrive\Bureau\A ENVOYER\" & sFileName ' <= emplacement de destination
                     sFileName = "C:\Users\anton\" & sFileName
     
        '--- méthode 1 --- enregistrement immédiat
        'DoCmd.OutputTo acOutputReport, "Contrat_V_2020", acFormatPDF, sFileName, , , , acExportQualityPrint
     
        '--- méthode 2 à privilégier et ci-dessous --- enregistrement avec possibilité de changer de dossier, de nom, ou d'annuler
        '=> Application.FileDialog(msoFileDialogSaveAs)a écrire à la main, le copier/coller ne fonctionne pas !!
        With Application.FileDialog(msoFileDialogSaveAs)
            .Title = "Sauver le contrat au format pdf"
            .InitialFileName = sFileName
            If .Show Then
                sFileName = .SelectedItems(1)
                DoCmd.OutputTo acOutputReport, "E_Facture_par_mun", acFormatPDF, sFileName, , , , acExportQualityPrint
     
            Else
                MsgBox "Annulé (non enregistré)", , "Pour info"
            End If
        End With
    End Sub

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Oui, j'avais bien compris, c'était juste un exemple simple pour que vous comprenions la procédure.

    Mais en effet, vous pouvez aussi boucler sur le jeu d'enregistrements du sous-formulaire contenant les factures sélectionnées :

    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
        Dim LValue As String 'converti la date francaise en date anglaise
        Dim sFileName As String  'construction du nom du fichier
     
        LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
        with Me.SF_Factures.Form.Recordsetclone ' référence au jeu d'enregistrements du sous-formulaires SF_Factures
            do until .eof
                if .selection then ' si la facture est sélectionnée
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = Me.Client_1.Column(1) & "_" & Me.Type_de_doc & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
                    sFileName = "C:\Users\anton\" & sFileName
                    DoCmd.OutputTo acOutputReport, , "PDF", sFileName' génère le pdf correspondant à l'état affiché..
                end if
                .MoveNext
            loop
        end with
    En supposant que votre sous-formulaire se nomme SF_Factures.

    Cdlt,

  6. #6
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Ok,
    je viens de placer le code avec le nom de mon formulaire modifié, mais ça ne fonctionne pas ...
    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
    Private Sub Commande11_Click()
     Dim LValue As String 'converti la date francaise en date anglaise
        Dim sFileName As String  'construction du nom du fichier
     
        LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
        With Me.F_Factures_SF.Form.RecordsetClone ' référence au jeu d'enregistrements du sous-formulaires F_Factures_SF
            Do Until .EOF
                If .Selection Then ' si la facture est sélectionnée
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = Me.Client_1.Column(1) & "_" & Me.Type_de_doc & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
                    sFileName = "C:\Users\anton\" & sFileName
                    DoCmd.OutputTo acOutputReport, , "PDF", sFileName ' génère le pdf correspondant à l'état affiché..
                End If
                .MoveNext
            Loop
        End With
    End Sub
    Nom : Capture.PNG
Affichages : 231
Taille : 99,3 Ko

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    Apparemment il ne trouve pas le sous-formulaire F_Factures_SF, dans le form principal..

    Quel est le message d'erreur exactement ?

  8. #8
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    je pense, si c'est pas trop compliqué et trop lourd, a créer un code qui sur clic apreçu du formulaire "F_Selection......" lancer une boucle d'ouverture de mon formulaire "F_Factures" à l'"ID_Facture" selectionné dans mon formulaire "F_Selection.....", lancer l'impression et refermer le formulaire F_Factures

  9. #9
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    oui, j'avais compris, et c'est du au fait que la selection des factures se fait depuis un autre formulaire que celui de la saisie des factures ...
    une copie ecran de mes 2 formulaires. 1 se nomme F_selection ..... et l'autre F_Facture avec un sous formulaire F_Factures_SF
    Nom : Capture.PNG
Affichages : 228
Taille : 108,8 Ko

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    qui reste ouvert je suppose ?

    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
      Dim LValue As String 'converti la date francaise en date anglaise
        Dim sFileName As String  'construction du nom du fichier
     
        LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
        with Forms!F_Selection_des_factures_a_imprimer_en_lot.Form.Recordsetclone ' référence au jeu d'enregistrements du sous-formulaires SF_Factures
            do until .eof
                if .selection then ' si la facture est sélectionnée
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = Me.Client_1.Column(1) & "_" & Me.Type_de_doc & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
                    sFileName = "C:\Users\anton\" & sFileName
                    DoCmd.OutputTo acOutputReport, , "PDF", sFileName' génère le pdf correspondant à l'état affiché..
                end if
                .MoveNext
            loop
        end with

  11. #11
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    F_Slection... rest ouvert oui.
    j'ai tenter le code et ...
    Nom : Capture1.PNG
Affichages : 226
Taille : 41,6 Ko
    Nom : Capture.PNG
Affichages : 230
Taille : 10,2 Ko

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 394
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    le module semble être celui de F_Selection_des_factures_a_imprimer_en_lot : form_F_Selection_des_factures_a_imprimer_en_lot, donc le bouton est sur ce formulaire ?

    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
    Dim LValue As String 'converti la date francaise en date anglaise
        Dim sFileName As String  'construction du nom du fichier
     
        LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
        with Me.F_Factures_SF.form.Recordsetclone ' référence au jeu d'enregistrements du sous-formulaires .F_Factures_SF
            do until .eof
                if .selection then ' si la facture est sélectionnée
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = Me.Client_1.Column(1) & "_" & Me.Type_de_doc & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
                    sFileName = "C:\Users\anton\" & sFileName
                    DoCmd.OutputTo acOutputReport, , "PDF", sFileName' génère le pdf correspondant à l'état affiché..
                end if
                .MoveNext
            loop
        end with

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 817
    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 817
    Points : 14 911
    Points
    14 911
    Par défaut
    bonjour,
    Le message d'erreur est clair: il ne trouve pas F_Selection_des_factures_a_imprimer_en_lot, puisqu'il n'existe pas
    un peu de rigueur n'aurait pas été de trop lors du nommage de ton objet : le formulaire s'appelle F_Selction_des_factures_a_imprimer_en_lot, il manque un "e" à Selection.

  14. #14
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Tee_grandbois, user

    Tee_grandbois, merci je n'avais pas vu la faute ... oui, manque de rigeur ... et peut etre de la fatigue et de l'agacement.

    User, j'ai remis le 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
    Dim LValue As String 'converti la date francaise en date anglaise
        Dim sFileName As String  'construction du nom du fichier
     
        LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
        With Forms!F_Selction_des_factures_a_imprimer_en_lot.Form.RecordsetClone ' référence au jeu d'enregistrements du sous-formulaires SF_Factures
            Do Until .EOF
                If .Selection Then ' si la facture est sélectionnée
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = Me.Client_1.Column(1) & "_" & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
                    sFileName = "C:\Users\pc bureau\" & sFileName
                    DoCmd.OutputTo acOutputReport, , "PDF", sFileName ' génère le pdf correspondant à l'état affiché..
                End If
                .MoveNext
            Loop
        End With
    et j'ai lancer le formulaire F_Selction ..... j'ai saisie les date voulu, j'ai coché, 2 factures, les 35 et 37 puis j'ai lancé l'aperçu (la procédure ci-dessus).
    à l'écran; j'ai la facture N° 35 qui c'est ouverte, puis la création d'un fichier pdf nommer "PUZZUL__du_21-07-2022-N°_34", puis de nouveau la facture 35 qui s'ouvre et la création d'un fichier pdf nommer "PUZZUL__du_21-07-2022-N°_34", qui écrase donc le précédant. en ouvrant le fichier pdf, j'ai la facture N° 35, avec toutes les données de la facture N° 35

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 817
    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 817
    Points : 14 911
    Points
    14 911
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    sFileName = Me.Client_1.Column(1) & "_" & "_ du_ " & LValue & "- N°_" & Me.ID_Facture & ".pdf"
    il ne faut jamais prendre les données du formulaire sauf si on souhaite utiliser une constante (date d'édition saisie par exemple), mais ceux du Recordset qu'on est en train de lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                   sFileName = .Client_1 & "_" & "_ du_ " & LValue & "- N°_" & .ID_Facture & ".pdf"

  16. #16
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Tee_grandbois,
    j'ai tester le code que tu m'as donné.
    j'ai selectioné 2 factrues, les 35 et 37 et j'ai lancé l'aperçu.
    l'etat c'est ouvert sur la facture N° 35, le fichier créé est nommé 3_du_21-07-2022-N°_34 et en ouvrant le fichier j'ai la facture N°35 ...Nom : Capture.PNG
Affichages : 215
Taille : 217,5 Ko

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 817
    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 817
    Points : 14 911
    Points
    14 911
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = .Client_1 & "_" & "_ du_ " & LValue & "- N°_" & .ID_Facture & ".pdf"
    si on ouvre l'état avec la même sélection sur les 2 lignes, je ne vois pas comment le numéro de facture peut changer.
    Sinon, il me faudra (si possible) la base de donnée pour vraiment regarder dans le détail.
    j'ai selectioné 2 factrues, les 35 et 37 et j'ai lancé l'aperçu.
    et que ce passe-t-il avec la facture N° 37 ?

  18. #18
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Je viens de controler mon code, c'est le suivant :
    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
    Private Sub Commande11_Click()
    Dim LValue As String 'converti la date francaise en date anglaise
        Dim sFileName As String  'construction du nom du fichier
     
        LValue = Format(DATE_Facture, "dd-mm-yyyy")
     
        With Forms!F_Selction_des_factures_a_imprimer_en_lot.Form.RecordsetClone ' référence au jeu d'enregistrements du sous-formulaires SF_Factures
            Do Until .EOF
                If .Selection Then ' si la facture est sélectionnée
                    DoCmd.OpenReport "E_Facture_par_num", acViewPreview, , "ID_Facture=" & .[ID_Facture]
     
                    sFileName = Client_1 & "_du_" & LValue & "_N°_" & ID_Facture & ".pdf"
                    sFileName = "C:\Users\pc bureau\" & sFileName
                    DoCmd.OutputTo acOutputReport, , "PDF", sFileName ' génère le pdf correspondant à l'état affiché..
                End If
                .MoveNext
            Loop
        End With
    End Sub
    et pour la facture 37, il ne se passe absolument rien ...

  19. #19
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Ma base, j'ai supprimer pas mal d'états et de formulaires pour la base puisse passer sur le forum.
    dans le formulaire menu, onglet les états, impression des factures en lot
    tu saisie du 01/01/2022 au 31/12/2022 et afficher
    tu sélectionnes les factures à imprimer, moi je sélectionne a chaque fois la 35 et 37, volontairement pour tester, tu recliques sur afficher, puis sur aperçu ... et la le résultat
    Fichiers attachés Fichiers attachés

  20. #20
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 817
    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 817
    Points : 14 911
    Points
    14 911
    Par défaut
    4 anomalies constatées:
    -1: la première est une horreur: pourquoi utiliser une requête union comme source de l'état ? c'est 2 fois la même requête avec des filtres différents: j'ai enlevé tout ce qui était en double, et gardé qu'une requête dans le formulaire (mais rien détruit).
    Il faut filtrer directement à partir des formulaires appelants en utilisant les paramètres d'ouverture d'état:
    dans F_Factures pour Commande81_Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DoCmd.OpenReport "E_Facture_par_num", acPreview , "ID_Facture=" &  Me.[ID_Facture]
    et dans F_Selction_des_factures_a_imprimer_en_lot pour Commande11_Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "E_Facture_par_num", acPreview , "ID_Facture=" &  .[ID_Facture]
    du coup, je comprend pourquoi le formulaire F_Factures doit rester ouvert: c'est pour éviter ce message :
    Nom : _1.JPG
Affichages : 210
Taille : 109,2 Ko
    - 2: tu ne copies pas correctement le code donné : il manque le "." devant Client_1 et [ID_Facture]:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sFileName = Client_1 & "_du_" & LValue & "_N°_" & ID_Facture & ".pdf"
    résultat: c'était toujours les informations de l'enregistrement en cours qui était utilisé pour nommer le fichier et pas celui de RecordSetClone.

    - 3: il manquait un Refresh au début de la boucle pour forcer la mise à jour de la dernière sélection de facture (la 37 qui ne s'imprimait pas) tant que le petit crayon sur l'enregistrement est actif c'est que la mise à jour de la table n'est pas effectuée:
    Nom : _0.JPG
Affichages : 215
Taille : 288,8 Ko
    Enfin, lorsqu'on utilise RecordSetClone, il vaut mieux mettre un MoveFirst pour revenir au premier enregistrement car l'instance de l'objet RecordSetclone étant permanente, ne revient pas au début comme une instance du Recordset, par exemple
    lorsque l'on code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim oRst as DAO.Recordset
    Set oRst = Me.RecordSetClone
    Enfin, si tu veux le nom du client à la place de l'identifiant, il suffit d'ajouter la table T_Clients à la requête du formulaire, faire une jointure, ajouter le champ à utiliser dans VBA.
    Le Recordset étant le jeu de données de la requête du formulaire, il n'est pas nécessaire d'ajouter le champ en tant que contrôle dans le formulaire mais est visible et utilisable dans VBA.

    Dernière chose: il faut savoir que l'affichage de l'aperçu ne fonctionne que pour la dernière facture traitée.

    Ci joint la base corrigée:
    Test devis vers facture_V51 - corrigé.zip

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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 plusieurs PDF à partir d’un état
    Par antony34200 dans le forum IHM
    Réponses: 42
    Dernier message: 02/08/2020, 04h47
  3. Créer un PDF à partir de plusieurs fichiers
    Par Oscar02 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/04/2019, 14h55
  4. [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
  5. [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

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