1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    octobre 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2013
    Messages : 60
    Points : 81
    Points
    81

    Par défaut Exporter en pdf avec comme nom le contenu d'un champ

    Bonjour
    Sur clic d’un bouton "visualiser" je visualise l’enregistrement courant d’un formulaire via un etat au moyen du générateur de macro.

    Nom de l’état : etatimprimer
    Affichage : Aperçu avant impression
    Nom du filtre : néant
    Condition where : [numerofiche]=[Formulaires]![nomformulaire]![numerofiche]
    Mode fenêtre : standard


    Quand je clique sur le bouton "visualiser" l'etat s'ouvre bien sur l'enregistrement courant et j’ai l’aperçu. Ensuite quand je veux exporter au format pdf, j'appuie sur PDF/XPS il me propose comme nom « etatimprimer.pdf »or je veux qu'on me propose par défaut le contenu qui figure dans un autre champ [nomdelafiche] de nomformulaire soit "nomdelafiche.pdf"
    J’ai cherché dans la faq et dans les tutoriels mais je n’ai rien trouvé
    Merci pour toute suggestion ou aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 644
    Points : 17 619
    Points
    17 619

    Par défaut

    Bonjour.

    Avec des macros je ne sais pas mais voici une solution avec du VBA.
    À adapter à ta réalité.

    Trouvée ici https://social.msdn.microsoft.com/Fo...n?forum=isvvba

    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
     
    public sub ExportPDF()
     
    Dim MyFilter as String
    Dim MyPath as String
    Dim MyFilename as String
     
    MyFilter = "Field = State your filter here as usual"
     
    'I place the file on a different folder depending on the date stated in a field called "Date"
    MyPath= "C:\Folder\" & Format(Me.Date, "yyyy")
     
    'State the filename. Here I use YYYY-DD-MM-Event.pdf
     
    MyFilename= Format(Me.EventDate, "yyyy") & _
                     "-" & Format(Me.EventDate, "dd") & Format(Me.EventDate, "mm") & _
                     "-" & Me.Event & ".pdf"
     
    'Let's print and save. Once you see it works, you can change True to False so that the file created is not opened after completion.
    DoCmd.OpenReport "ReportName", acViewPreview, , MyFilter
    DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, True
     
    'Let's close our previewed report
    DoCmd.Close acReport, "ReportName"
     
    end sub
    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.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    octobre 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2013
    Messages : 60
    Points : 81
    Points
    81

    Par défaut merci

    Bonjour
    Merci beaucoup
    si j'ai le choix j'ai tendance à utiliser le générateur de macro ça me paraît plus simple par contre j'ai l'impression que en parle moins dans les forums.
    mais je prends avec grand plaisir cette proposition en VBA je regarde et je reviens.

    à bientôt

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 644
    Points : 17 619
    Points
    17 619

    Par défaut

    Bonjour.

    Les macros sont plus simples au départ mais leur mise au point et leur débuggage sont plus ardus.
    Elles sont très biens si tu fais des traitements ultra simple et parfaitement répétitifs.
    Elles peuvent faire des traitements plus complexes mais ce sont un peu des boites noires, si elles ne fonctionent pas tu as peu de moyen de savoir pourquoi.

    VBA demande plus d'apprentissages mais il vient avec des outils qui facilite la recherche d'erreur et de problème.
    Il permet aussi plus de souplesse sur les traitements et donne accès a des choses qui sont innacessibles aux macros (ex : Internet Explorer, Excel, Word).

    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.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    octobre 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2013
    Messages : 60
    Points : 81
    Points
    81

    Par défaut

    Bonjour

    Merci pour ces utiles précisions sur l'avantage du VBA, en fait j'avais lu que pour le déploiement c'était plus facile à maintenir.

    Sinon j'ai adapté le code que tu m'as fourni et ça marche, le voici si ça peut intéresser vu que c'est un exemple pratique pour comprendre puisque la table comprend 3 champs NumeroFiche, NomFiche, Descriptif; un formulaire "nomformulaire" et un etat "etatimprimer" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Sub ExportPDF()
    Dim MyFilter As String
    Dim MyPath As String
    Dim MyFilename As String
    MyFilter = "[Numerofiche]=" & [Forms]![nomformulaire]![NumeroFiche]
    MyPath = "C:\"
    ‘MyFilename = Me.[NomFiche] & ".pdf" (marche pas ?)
    MyFilename = [Forms]![nomformulaire]![NomFiche] & ".pdf"
    DoCmd.OpenReport "etatimprimer", acViewPreview, , MyFilter
    DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, True
    DoCmd.Close acReport, " etatimprimer "
    End Sub
    Si j'ai bien compris Myfilter est une condition where?

    Comme je ne savais pas résoudre de code MyFilename = Me.[NomFiche] & ".pdf" qui ne marche pas et me renvoyait une message d'erreur avec mauvaise utilisation de Me.

    J'ai donc du mettre le nom en dur du contrôle mais je ne sais pas si c'est très orthodoxe:

    MyFilename = [Forms]![nomformulaire]![NomFiche] & ".pdf"

    Accessoirement j'aimerai bien une fois le fichier sauvegardédans mon répertoire, l'envoyer par email, si je clique sur l'icone "courrier electronqiue" dans ce cas il me conserve pplus le nom.pdf mais me propose à nouveau comme nom de fichier "etatimprimer.pdf"

    Faut il créer une autre procédure ?
    Merci encore

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 644
    Points : 17 619
    Points
    17 619

    Par défaut

    Citation Envoyé par hyrkanie Voir le message
    Si j'ai bien compris Myfilter est une condition where?
    Oui c'est exactement cela sans le mot WHERE au début.

    Comme je ne savais pas résoudre de code MyFilename = Me.[NomFiche] & ".pdf" qui ne marche pas et me renvoyait une message d'erreur avec mauvaise utilisation de Me.
    Me. représente l'objet (ici un formulaire) qui exécute le code donc si ton code n'est pas "dans" le formulaire il est normal que cela ne marche pas.

    J'ai donc du mettre le nom en dur du contrôle mais je ne sais pas si c'est très orthodoxe:

    MyFilename = [Forms]![nomformulaire]![NomFiche] & ".pdf"
    C'est une solution efficace. Son "défaut" est qu'elle est dépendante de l'environnement.
    Si ton formulaire change de nom, ton code ne fonctionne plus. C'est assez rare qu'on le fasse mais cela peut arriver.
    Le Me. se référant au formulaire éxécutant quel qu'il soit est plus polyvalent et moins "fragile".

    Accessoirement j'aimerai bien une fois le fichier sauvegardédans mon répertoire, l'envoyer par email, si je clique sur l'icone "courrier electronqiue" dans ce cas il me conserve pplus le nom.pdf mais me propose à nouveau comme nom de fichier "etatimprimer.pdf"
    Oui, là encore je n'ai qu'une solution VBA à t'offrir.

    Elle est là car c'est un sujet récurrent :
    Comment envoyer un mail avec Outlook ?
    https://access.developpez.com/faq/?page=Outlook#outlook

    Le chemin et le nom du fichier doivent être passé via le 4ième paramètre à la procédure.

    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.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    octobre 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2013
    Messages : 60
    Points : 81
    Points
    81

    Par défaut un grand merci

    Bonjour

    Merci encore pour avoir pris la peine de toutes ces explications.

    Pour Me effectivement si je le place dans le formulaire ça marche.
    Pour l'export Outlook, dans mon empressement d'indiquer que ça marchait je n'ai plus pensé à rechercher dans la FAQ. merci pour le lien. Inutile de réinventer la roue.
    Et vive le VBA
    Bonne continuation à bientôt

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/11/2016, 15h04
  2. [XL-2007] exporter un document excel au format pdf avec comme nom une cellule
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2015, 03h34
  3. [XL-2010] Enregistrement PDF avec pour nom de fichier le contenu d'une cellule.
    Par Julzz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2012, 11h46
  4. récuper valeur checkbox avec comme nom "xx[]"
    Par stevensf dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/10/2008, 14h57
  5. Réponses: 3
    Dernier message: 17/05/2007, 10h24

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