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 :

Lire un fichier PDF en Access [AC-365]


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Lire un fichier PDF en Access
    Bonjour à tous,

    J'essaie de lire un fichier PDF en ACCESS (Office 365).
    J'ai trouvé sur le forum le code suivant que j'essaie d'appliquer:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
    Public Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Ouvrir()
    Dim Fichier As String
     
    Fichier = "C:\dossier\nom image.jpg"
    ShellExecute 0, "", Fichier, "", "", 0
    End Sub

    Mais je suis en windows 7 PRO 64 bits et je reçois le message suivant :

    Microsoft Visual Basic pour Applications

    Citation Envoyé par Access
    Erreur de compilation:
    Le code contenu dans ce projet doit être mis à jour pour pouvoir être utilisé sur les systèmes 64 bits.
    Vérifiez et mettez à jour les instructions DECLARE, puis marquez les avec l'attribut PtrSafe.
    Je suis débutant en VBA et je ne sais pas comment adapter le code pour un ordinateur 64 bits.
    Merci par avance à toute personne qui peut m'aider.

  2. #2
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour JPJOLY

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute Me.hwnd, "open", "nom image.jpg", "", "C:\dossier" & "\", 1
    1° argument = la fenetre windows
    2° argument = faire quoi ?
    3° argument= nom du fichier avec l'extention
    5° argument= le chemin avec "\"
    6° argument = visible (ou pas)

    Cdlt

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Merci mais....
    Merci beaucoup Thierry de me venir en aide. Mais en fait le problème vient de la définition Declare Function sur laquelle je reçois le message que j'ai joint.
    Est ce le fait que l'on fait référence à la librairie "Shell32.dll" alors que je suis en 64 bits ?
    Ou faut il définir ShellExecute autrement ?i
    J'avoue être incompétent dans ce domaine.
    merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour JPJOLY.
    Désolé ,tu precises pour Windows mais Office 365 possède les 2 versions.

    Déclaration ShellExecute compatible 32/64 bits:

    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
    ' --- DECLARATION API WINDOWS
    #If VBA7 Then
      Private Declare PtrSafe Function ShellExecute _
        Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
          ByVal hwnd As LongPtr, ByVal lpOperation As String, _
          ByVal lpFile As String, ByVal lpParameters As String, _
          ByVal lpDirectory As String, ByVal nShowCmd As Long) _
        As LongPtr
    #Else
      Private Declare Function ShellExecute _
        Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
          ByVal hwnd As Long, ByVal lpOperation As String, _
          ByVal lpFile As String, ByVal lpParameters As String, _
          ByVal lpDirectory As String, ByVal nShowCmd As Long) _
        As Long
    #End If
    Concernant la commande, il y a quand même des arguments (3 et 5) qui m'interpellent.
    Cdlt

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Presque ....
    Merci Thierry de ta réponse.
    En me basant sur tes conseils jai écrit ce module:

    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
    Option Explicit
    Public Function LirePDF(fact As String, addr As String)
    ' je voudrais passer en lpFile par ex: facture1.pdf   et en lpDirectory  par ex: \C:FACTPDF
    lpFile = fact
    lpDirectory = addr
    Public Declare PtrSafe Function ShellExecute _
        Lib "shell32.dll" _
        Alias "ShellExecuteA" ( _
          ByVal hwnd As LongPtr, ByVal lpOperation As String, _
          ByVal lpFile As String, ByVal lpParameters As String, _
          ByVal lpDirectory As String, ByVal nShowCmd As Long) _
        As LongPtr
     
    ShellExecute Me.hwnd, "open", lpFile, "", lpDirectory & "\", 1
    End Function
    ...je t'entends d'ici me traiter de nul (ce qui n'est pas faux..) mais je t'avais prévenu je suis débutant en Visual Basic.
    Je voudrais donc pouvoir appeler cette fonction à partir d'une macro associée à un bouton d'un formulaire, en passant les paramètres de nom de fichier et indication de la directory.
    Quand j'exécute ma macro je reçois le message:
    Citation Envoyé par Access
    UNE ERREUR EST SURVENUE LORS DE LA COMPILATION DE CETTE FONCTION.
    LE MODULE VISUAL BASIC COMPORTE UNE ERREUR DE SYNTAXE.
    VERIFIEZ LE CODE PUIS RECOMPILEZ LE.
    J'ai deux interrogations: 1- que représente la variable hwnd ?
    2- dans le code que tu me proposes (comme dans l'exemple qui m'a inspiré) le fichier est un fichier .jpg mais moi ce que je désirerais ouvrir est un fichier .pdf . Ca peut marcher avec des fichiers .pdf ?
    Merci encore pour ton aide et excuse ma médiocrité (si tu connais un bon bouquin sur VBA ACCESS merci de me l'indiquer).

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 770
    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 770
    Points : 14 812
    Points
    14 812
    Par défaut
    bonsoir,
    cela fonctionne mieux en y remettant un peu d'ordre :
    1) il faut déclarer les API comme ShellExecute au niveau le plus haut c'est à dire juste après les instructions Option d'un module standard (donc pas dans le code du formulaire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    Option Explicit
    Public Declare PtrSafe Function ShellExecute _
    Lib "shell32.dll" _
    Alias "ShellExecuteA" ( _
    ByVal hwnd As LongPtr, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) _
    As LongPtr
    2) ensuite on peut créer la fonction LirePDF toujours dans le module standard. Telle qu'elle est, elle peut être utilisée par n'importe quel formulaire d'où l'importance de remplacer Screen.ActiveForm.hwnd plutôt que Me.hwnd, incorrect à ce niveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Function LirePDF(lpFile As String, lpDirectory As String)
    ' je voudrais passer en lpFile par ex: facture1.pdf et en lpDirectory par ex: \C:FACTPDF
     
    ShellExecute Screen.ActiveForm.hwnd, "open", lpFile, "", lpDirectory & "\", 1
    End Function
    3) enfin, dans un formulaire, la fonction s'utilise comme dans l'exemple ci-dessous sur clic d'un bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub btnLirePdf_Click()
     
    Call LirePDF("facture1.pdf", "C\:FACTPDF")
     
    End Sub

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 58
    Points : 57
    Points
    57
    Par défaut PB RESOLU
    Un grand Merci à Thierry et tee_Grandbois qui m'ont aidés à résoudre parfaitement ce problème.
    jp

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

Discussions similaires

  1. Lire un fichier PDF
    Par devyan dans le forum Composants VCL
    Réponses: 6
    Dernier message: 05/09/2007, 20h33
  2. [BDS 2006]Lire un fichier PDF
    Par pottiez dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/06/2007, 10h35
  3. [SOLARIS] Lire des fichiers PDF sous SOLARIS
    Par StyleXP dans le forum Solaris
    Réponses: 4
    Dernier message: 15/11/2006, 19h57
  4. Ouvrir un fichier Pdf avec access
    Par willytito dans le forum Access
    Réponses: 1
    Dernier message: 13/08/2006, 19h37
  5. [PDF] Lire un fichier PDF
    Par molesqualeux dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 24/05/2006, 18h41

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