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 :

Exporter état en PDF


Sujet :

VBA Access

  1. #1
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut Exporter état en PDF
    Bonjour,

    Aprés quelques recherches, je n'ai pas trouver de solutions que je comprenne vraiment c'est pourquoi je fait appel à vous.

    Je souhaite exporter un état en pdf. Mon Pc est équipé de ScanSoft PDF Create! équivalent de PDF créator. Mon objectif est de de pouvoir faire un PDF par page de l'état sachant qu'une page décrit un objet particulier. Le nombre d'objets total est de 1300 donc 1300 pages à l'état et 1300 fichier pdf nommé grâce au numéro identifiant de ces derniers. Ce numéro est contenu dans un champs de la base de données.

    Je ne cherche pas à avoir une IHM dévellopée ou des fonctions completement intégrées car c'est moi et seulement moi qui vait exporter donc s'il il faut entrer un peu dans le code à chaque export cela n'est pas un problème.

    Merci de pour vos pistes de réflexion.

    Cordialement

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Salut,

    Si tu regarde en page 2, j'ai placé un 'tuto' pour utiliser l'imprimante PDF ou celle par défaut de windows.

    Tu peux l'adapter comme tu veux,

    Pour afficher les 1300 pages 1 dans 1 fichier, il suffit de faire une boucle, tu sorts l'état, impression (PDF) tu fermes l'état et tu passes au suivant.

    A+

  3. #3
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Page 2 ? C'est où

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Désolé, les tuto ont été placé dans la section contribuez.

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    Regarde la aussi. j'ai testé cette solution, elle marche bien.
    J'espére que ça correspond a ce que tu cherchais

  6. #6
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Merci electrosat03 pour tes réponses,

    Est-ce que tu pourrais me donner un peu plus de détails sur ton code notamment sur l'appel de print_facture????K

    Autrement j'ai essayer de faire fonctionner l'appli de cafeine mais j'ai une erreur 429 quand l'appli veut ajouter une ligne. Pour info j'ai access 2003.

    Enfin dernière précision je voudrais dans l'absolu que mes pdf soit nommé en fonction de la valeur contenu dans un champ.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Re,

    Voici ma procédure Print_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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Public Sub Print_Facture()
         Dim db As DAO.Database
        Dim rst As DAO.Recordset
        Dim StrSql As String
        Dim VarNRS As String
        Dim VarNumFact As Integer
        Dim Message As String
     
        'Jeu d'enregistrements où Impression=Yes dans T_Facture
        StrSql = "SELECT T_Facture.NomRaisonSociale, T_Facture.NumFact, T_Facture.Impression" & _
        " FROM T_Facture" & _
        " WHERE (((T_Facture.Impression) Like Yes));"
     
        Set db = CurrentDb
        Set rst = db.OpenRecordset(StrSql)
     
        If rst.EOF = True Then
            Message = MsgBox("Vous devez d'abord cocher les factures que vous désirez imprimer.", vbInformation + vbOKOnly, "Impression")
            Exit Sub
        End If
     
        VarNRS = rst("NomRaisonSociale")
        VarNumFact = rst("NumFact")
        'Ouverture de l'état vue de la facture
        Dim stDocName As String
        stDocName = "E_ViSu_Fact_Etablie"
     
        'Clause WHERE pour l'état où Impression est égal à OUI
        Dim StrWhere As String
        Dim GstrWhere As String
        StrWhere = "Yes"
        GstrWhere = "[Impression] IN (" & StrWhere & ")"
     
        'Boîte de dialogue pour demander le nbre de copie
        NbreCopiePrint = InputBox("Nombre de Copies souhaitées?" & vbCrLf & _
                        "Entrez 0 Pour avoir un preview" & vbCrLf & vbCrLf & _
                        "Si vous demandez plus d'une copie, le N° de copie 1 sera indiqué en bas de page à partir de la seconde série." & vbCrLf & _
                        "Vous aurez un preview mais les impressions seront lancées.")
        If NbreCopiePrint = "" Then Exit Sub 'Si annuler
     
        'Si l'état est déjà ouvert on le ferme
        If CurrentProject.AllReports(stDocName).IsLoaded = True Then
            DoCmd.Close acReport, stDocName, acSaveNo
        End If
     
        If Len(NbreCopiePrint) = 0 Or NbreCopiePrint = "0" Then 'Si 0 copie
            'Ouverture de l'état avec la clause WHERE
            DoCmd.OpenReport stDocName, acViewPreview, wherecondition:=GstrWhere
            Exit Sub
        Else
            VarNbreFacturePrint = CompteurPrint 'donne à la variable le Nbre de facture à imprimer
            DoCmd.OpenReport stDocName, acViewPreview, wherecondition:=GstrWhere
            'La ligne suivante imprimera le nbre de copies
            DoCmd.PrintOut , , , , NbreCopiePrint
        End If
     
        rst.Close
        Set rst = Nothing
        Set db = Nothing
     
        'Met l'imprimante par défaut comme imprimante courante
        Set Printer = Printers(ImprimanteParDefaut)
     
    End Sub

    Tu dois évidemment l'adapter pour ton usage

    A+

  8. #8
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Merci,

    J'ai un dernier petit truc à te demander,

    Mon Etat est basé sur une requête, et je vois que ton tout dernier code permet d'ouvrir un etat ne fonction d'une clause where ce qui pourrait répondre à mon problème :

    Potentiellement il faudrait que la clause where soit égale à une variable qui prenne ces valeurs dans un champs. Et cela pour l'ensemble des enregistrement de la table.

    aurait-tu une idée?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Alors, c'est un peu vague...

    Mais si tu as un form qui affiche les enregistrements que tu dois imprimer, il suffit de placer dans la clause Where, un identifiant de l'enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Clause WHERE pour l'état où Impression est égal à OUI
        Dim StrWhere As String
        Dim GstrWhere As String
        StrWhere = "Yes"
        GstrWhere = "[Impression] IN (" & StrWhere & ")"
    Ici yes est une case à cocher qui correspond aux facture que je veux imprimer
    Impression est le nom du champ

    Maintenant, si une impression est égale à un enregistrement et donc un etat en PDF, je pense que le plus simple est de faire une requete SQL en VBA.

    Tu prend le 1° enregistrement tu l'imprime avec le nom que tu veux, tu fermes et tu passe au suivant.

    A+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    re,

    Alors j'ai regardé un peu.

    Voici le code corrigé pour afficher un état puis attendre que celui-ci soit fermé pour passer au suivant grace à une boucle do while et DoEvents.

    Pour sauvegarder l'état en PDF, regarde dans le code qui est dans le tuto.

    A+

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Salut,

    Le code pour imprimer en PDF, un PDF par rapport.
    Donc pour toi il y aura 1300 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Public Sub Print_Facture()
        Call Nom_Form_Actif
        Dim db As DAO.Database
        Dim rst As DAO.Recordset
        Dim StrSql As String
        Dim VarNRS As String
        Dim VarNumFact As Integer
        Dim Message As String
        NbreCopiePrint = 0
        NumRecordActif = Me.CurrentRecord
     
        'Jeu d'enregistrements où Impression=Yes dans T_Facture
        StrSql = "SELECT T_Facture.NomRaisonSociale, T_Facture.NumFact, T_Facture.Impression" & _
        " FROM T_Facture" & _
        " WHERE (((T_Facture.Impression) Like Yes));"
     
        Set db = CurrentDb
        Set rst = db.OpenRecordset(StrSql)
     
        If rst.EOF = True Then
            Message = MsgBox("Vous devez d'abord cocher les factures que vous désirez imprimer.", vbInformation + vbOKOnly, "Impression")
            Exit Sub
        End If
     
        rst.MoveFirst
     
        Do While Not rst.EOF
            Select_Printer_PDF 'Sélection de l'imprimante PDF dans le Modules Liste des Imprimantes
            VarNRS = rst("NomRaisonSociale")
            VarNumFact = rst("NumFact")
            'Ouverture de l'état vue de la facture
            Dim stDocName As String
            stDocName = "E_ViSu_Fact_Etablie"
     
            'Clause WHERE pour l'état où Impression est égal à OUI
            Dim StrWhere1 As String
            Dim StrWhere2 As String
            Dim GstrWhere As String
            StrWhere1 = "Yes"
            StrWhere2 = rst("NumFact")
     
            GstrWhere = "[Impression] IN (" & StrWhere1 & ") And [NumFact] IN (" & StrWhere2 & ")"
     
            'Si l'état est déjà ouvert on attend la fermeture
            Do While CurrentProject.AllReports(stDocName).IsLoaded = True
                'DoEvents
                DoCmd.Close acReport, stDocName
            Loop
     
            If Len(NbreCopiePrint) = 0 Or NbreCopiePrint = "0" Then 'Si 0 copie
                'Ouverture de l'état avec la clause WHERE
                DoCmd.OpenReport stDocName, acViewPreview, wherecondition:=GstrWhere
                DoCmd.PrintOut , , , , 1
            End If
     
            rst.MoveNext
        Loop
     
        rst.Close
        Set rst = Nothing
        Set db = Nothing
     
        DoCmd.GoToRecord acDataForm, "F_Fact_Etablie", acGoTo, NumRecordActif
        Me.NomRaisonSociale.SetFocus
        Me.NomRaisonSociale.SelStart = 0
     
        'Met l'imprimante par défaut comme imprimante courante
        Set Printer = Printers(ImprimanteParDefaut)
    End Sub

    Dans le rapport
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
            Me.Caption = Me.Num & "_" & Me.NomRaisonSociale
    End Sub
    Le changement du titre du rapport sert pour avoir le nom de sauvegarde du PDF.
    En effet, à chaque ouverture du rapport, la section Détail_Format est exécutée et donc le titre du rapport est modifié à chaque ouverture.

    Alors, à l'ouverture du 1° rapport, tu as la boîte de dialogue "enregistrer sous" qui s'ouvre, ne touche à rien, une boucle ferme le rapport et ouvre le second, etc...

    Tous les rapports sont placés dans le file d'attente de l'impression.
    A la fin, clique à chaque fois sur enregistrer de la boîte de dialogue, le PDF sera sauvegardé avec le nom du rapport.

    Je ne sais pas si c'est clair ;-)

    C'est une première esquisse, l'état s'ouvre en preview, car en normal ça ne se passe pas comme prévu, j'y travaille encore.

    A+

  13. #13
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    electrosat03

    Comment focntionne ceci :
    Select_Printer_PDF 'Sélection de l'imprimante PDF dans le Modules Liste des Imprimantes
    merci.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    C'est une procédure public dans un Module.

    Elle permet à son appel de sélectionner l'imprimante PDF, pour moi c'est "CutePDF Writer"

    Voici tout le module.
    L'avantage de celui-ci, c'est qu'il ne prend pas l'imprimante par défaut de l'application mais celle de windows.

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    Option Compare Database
    Option Explicit
     
    Private Declare Function GetProfileSection _
     Lib "kernel32" Alias "GetProfileSectionA" _
     (ByVal lpAppName As String, ByVal lpReturnedString As String, _
     ByVal lngSize As Long) As Long
     
    Private Const adhcMaxSection = 10000
    Public strImprimanteDefautNom As String 'Nom de l'imprimante par défaut...
     
    Function ListeImprimante() As String
        ' Retourne la liste des imprimantes
        ' dans la section [devices] de WIN.INI.
     
        Dim strMatchstr As String
        Dim strItems() As String
        Dim strPrinters() As String
        Dim strDetails() As String
        Dim NomImprimante(20) As String
        Dim PiloteImprimante(20) As String
        Dim PortImprimante(20) As String
        Dim liste As String
     
        Dim strBuffer As String
        Dim intCount As Integer
     
        Dim i As Integer
     
        On Error GoTo HandleErrors
     
        'Lecture de Win.ini
        strBuffer = Space(adhcMaxSection)
        intCount = GetProfileSection("Devices", strBuffer, adhcMaxSection - 1)
        strMatchstr = Left$(strBuffer, intCount)
     
        If Len(strMatchstr) = 0 Then
            intCount = 0
        Else
            strPrinters = Split(strMatchstr, vbNullChar)
            ReDim aDevList(LBound(strPrinters) To UBound(strPrinters))
            For i = LBound(strPrinters) To UBound(strPrinters)
                If Len(strPrinters(i)) > 0 Then
     
                    strItems = Split(strPrinters(i), "=")
                    NomImprimante(i) = strItems(0)
     
                    strDetails = Split(strItems(1), ",")
                    PiloteImprimante(i) = strDetails(0)
                    PortImprimante(i) = strDetails(1)
     
                    liste = liste & NomImprimante(i) & ";" _
                    & PiloteImprimante(i) & ";" & PortImprimante(i) & ";"
     
                End If
            Next i
        End If
     
    ExitHere:
        ListeImprimante = liste
        Exit Function
     
    HandleErrors:
        Select Case err.Number
            Case Else
                err.Raise err.Number, err.Source, err.Description
        End Select
    End Function
     
    Public Function ImprimanteParDefaut() As String
        ' Retourne la liste des imprimantes
        ' dans la section [devices] de WIN.INI.
     
        Dim strMatchstr As String
        Dim NomImprimante As String
        Dim strBuffer As String
        Dim intCount As Integer
        Dim i As Integer
        Dim PosDeb As Integer
        Dim PosFin As Integer
        Dim Longueur As Integer
     
        On Error GoTo HandleErrors
     
        ImprimanteParDefaut = ""
        'Lecture de Win.ini de la section windows
        strBuffer = Space(adhcMaxSection)
        intCount = GetProfileSection("Windows", strBuffer, adhcMaxSection - 1)
        strMatchstr = Left$(strBuffer, intCount)
     
        If Len(strMatchstr) = 0 Then
            intCount = 0
        Else
            PosDeb = InStr(1, strMatchstr, "Device=", vbTextCompare) + 7
            PosFin = InStr(PosDeb, strMatchstr, ",", vbTextCompare)
            Longueur = PosFin - PosDeb
            ImprimanteParDefaut = Mid(strMatchstr, PosDeb, Longueur)
            'Met l'imprimante par défaut comme imprimante courante
            Set Printer = Printers(ImprimanteParDefaut)
        End If
     
    ExitHere:
        Exit Function
     
    HandleErrors:
        Select Case err.Number
            Case Else
                err.Raise err.Number, err.Source, err.Description
        End Select
    End Function
     
    Public Sub Select_Printer_PDF()
    On Error GoTo Erreur_proPDF
     
        'Nom de l'imprimante PDF...
        '****************************************************'
        '!!! Il faut entrer le bon nom de l'imprimante PDF!!!
        '****************************************************'
        Dim strImprimantePDFNom As String
        strImprimantePDFNom = "CutePDF Writer" 'Ici le nom de l'imprimante PDF
     
        'Sélection de CutePDF Writer comme imprimante par défaut...
        Set Printer = Printers(strImprimantePDFNom)
        Exit Sub
     
    Sortie_proPDF:
        Set Printer = Printers(strImprimanteDefautNom)
        Exit Sub
     
    Erreur_proPDF:
        MsgBox err.Number & " : " & err.Description
        err.Clear
        Resume Sortie_proPDF
     
    End Sub

  15. #15
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Merci.

    J'utilise aussi Cutepdf Writer depuis peu.
    On peut l'utiliser en interne dans toute application pour créer des fichiers Postcript à convertir en PDF via Ghostcrip, sans passer par une fenetre de save as.

    J'y travaille encore, car normallement il faut la version payante "Custom redistribution" mais j'y arrive déjà de manière +- brutale.

    Si j'ai bien compris, tu rencontres aussi le problème de save as.
    Si tu le souhiates, quand j'ai terminé, je te tiens au courant.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Oui, merci ça peut-être utiles

    Merci
    A+

  17. #17
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    J'ai développé un code pour imprimer sur CutePdf sans fenetre savesas pour excel. Marche terrible.

    Je dois encore l'adapter pour word et access.
    Si tu es intéressé, envoie-moi un MP.

  18. #18
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour Word, il y a déjà un tuto pour PDFCreator
    http://heureuxoli.developpez.com/office/word/doc2pdf/

    Et sans intervention de l'utilisateur.

    Mais si tu as un code même pour Excel, tu peux le mettre sur le forum.
    Il y a un forum Contribuez sur Excel aussi.
    http://www.developpez.net/forums/forumdisplay.php?f=665

  19. #19
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Mon approche est un peu différente, dans son état actuel.

    Je généré le document .PDF à l'endroit du .XLS ou .DOC via l'utilisation d'un bouton de la barre d'outil.

    Le nom est le meme que le document original. Il n'y a aucune question.
    Mais si besoin, je peux étoffer.

    L'optique était de pouvoir générer en masse tout un tas de PDF et pour cela, cela fonctionne impeccablement bien.

    Mais c'est encore la version pré-beta (terminé hier très très tard)/

  20. #20
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Merci electrosat03 mais je ne comprend pas bien ton code. Je crois que mon niveau en VB n'est pas assez élevé

    J'essaie de m'orienter vers la solution de "pev15" qui me permet de créer un pdf sans problème. Il faut maintenant que je trouve une solution qui me permet de passer un paramètre à la requête sur lequel et crée mon état. Puis le paramètre va tourner.

    1) Mon premier problème, passer la paramètre à ma requête Voici mon 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 qdf As DAO.QueryDef
    Dim rcs As DAO.Recordset
    Dim Nom As String
     
      'référence à la requête
    Set qdf = CurrentDb.QueryDefs("ETAT_ATLAS")
     
      'code qui utilise qdf
      'par exemple
    Nom = qdf.Parameters("Param") = "264X0425"     '<== si requête paramétrée
     
     MsgBox Nom
     
    'qdf.Execute                                 '<== si requête action
    'Set rcs = qdf.OpenRecordset                 '<== pour travailler sur les données
    DoCmd.OpenQuery "ETAT_ATLAS"
    Ce code ne marche pas quand mon etat s'ouvre il me demande de remplir le paramètre alors que je l'ai mis ("264X0425")/ Par la suite je voudrais remplacer la valeur par une variable et au lieu d'ouvrir l'état envoyer la procédure d'export.

    Pour info mon Msgbox m'indique Faux. alors que je voudrais qu'il me mette la valeur du paramètre..

    2) Une fois que j'aurais reussi à passer mon paramètre, j'aimerais que la valeur du paramètre sois alimenter par un champs de ma BD et qu'a chaque enregitrement je créer mon pdf. Si quelqu'un à une idée.

    Merci par avance.

Discussions similaires

  1. exportation état en PDF
    Par Spanish_ dans le forum VBA Access
    Réponses: 6
    Dernier message: 14/03/2008, 16h22
  2. Exporter un état en PDF
    Par Gringo59 dans le forum IHM
    Réponses: 15
    Dernier message: 29/01/2008, 18h06
  3. Réponses: 4
    Dernier message: 07/05/2007, 16h47
  4. Exportation d'un état en PDF
    Par pasuperbon dans le forum Access
    Réponses: 13
    Dernier message: 11/01/2007, 18h08
  5. Exporter un État en pdf ?
    Par gaupiche dans le forum IHM
    Réponses: 2
    Dernier message: 22/05/2006, 17h11

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