Ligne de commande ouverture d'un pdf

cpaumier -  
VBACripteur Messages postés 4 Statut Membre -
Bonjour,

Je cherche une ligne de code pour ouvrir un pdf au cours de l'exécution d'une macro, par exemple, aprés qu'une donnée soit rentrée dans une boite de dialogue.

Merci d'avance

Bonne journée

1 réponse

  1. VBACripteur Messages postés 4 Statut Membre
     
    Bonjour,

    Tu peux utiliser les API pour ça;

    '*****
    Open_with_api (strFilePath) ' ouverture par API Windons
    '*****

    Public Sub Open_with_api(ByVal strPath As String)
    ' Procédure ouvrant un fichier ou dossier strPdfPath par l'API Windows
    Dim status, hWnd As Long
    Dim response As Integer
    Dim sErr As String

    Const SE_ERR_FNF = 2 ' fichier non trouvé ou chemin incorrect
    Const SE_ERR_PNF = 3 ' chemin inconnu
    Const SE_ERR_ACCESSDENIED = 5 ' accès interdit
    Const SE_ERR_OOM = 8 ' dépassement de mémoire
    Const SE_ERR_BAD_FORMAT = 11 ' exécutable non valide ou corrompu
    Const SE_ERR_SHARE = 26 ' violation de partage
    Const SE_ERR_ASSOCINCOMPLETE = 27 ' pas association valable
    Const SE_ERR_DDETIMEOUT = 28 ' délai max d'ouverture dépassé
    Const SE_ERR_DDEFAIL = 29 ' la transaction DDE a failli
    Const SE_ERR_DDEBUSY = 30 ' le fichier n'a pu être ouvert car en cours d'utilisation
    Const SE_ERR_NOASSOC = 31 ' aucune association définie pour ce type de fichier
    Const SE_ERR_DLLNOTFOUND = 32 ' DLL non trouvée

    status = ShellExecute(hWnd, "Open", strPath, ByVal 0&, 0&, SW_SHOWMAXIMIZED)

    If (status >= 0) And (status <= 32) Then
    Select Case status
    Case 0
    sErr = "Le système manque de mémoire ou de ressources, l'exécutable est corrompu ou réallocations non valides"
    Case SE_ERR_FNF
    sErr = "Fichier non trouvé ou chemin incorrect"
    Case SE_ERR_PNF
    sErr = "Chemin inconnu"
    Case SE_ERR_ACCESSDENIED
    sErr = "Erreur accès au répertoire ou au fichier"
    Case SE_ERR_OOM
    sErr = "Pas assez de mémoire"
    Case SE_ERR_BAD_FORMAT
    sErr = "Executable non valide ou corrompu"
    Case SE_ERR_SHARE
    sErr = "Violation de partage !."
    Case SE_ERR_ASSOCINCOMPLETE
    sErr = "Ce type de fichier est sans association valable"
    Case SE_ERR_DDETIMEOUT
    sErr = "Le fichier n'a pu être ouvert (délai max dépassé). Recommencez plus tard SVP."
    Case SE_ERR_DDEFAIL
    sErr = "Le fichier n'a pu être ouvert car la transaction DDE a failli. Recommencez plus tard SVP."
    Case SE_ERR_DDEBUSY
    sErr = "Le fichier n'a pu être ouvert car en cours d'utilisation. Recommencez plus tard SVP."
    Case SE_ERR_NOASSOC
    sErr = "Aucune association définie pour ce type de fichier"
    Case SE_ERR_DLLNOTFOUND
    sErr = "Impossible de trouver la DLL spécifiée."
    Case Else
    sErr = "Une erreur inconnue n°" & status & " a surgi au moment d'essayer d'ouvrir ou d'éditer le fichier choisi."
    End Select

    response = MsgBox(sErr & vbLf & vbLf & "Veuillez prendre contact avec l'administrateur du fichier '" & ActiveWorkbook.Name & "'.", vbCritical, "Erreur Open_with_api")
    End If

    End Sub

    Ne pas oublier les déclarations suivantes en début de module:

    '****************************************************************************************************************
    '* Déclaration des fonctions et procédures extérieures *
    '****************************************************************************************************************

    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

    '****************************************************************************************************************

    '****************************************************************************************************************
    '* Déclaration des constantes *
    '****************************************************************************************************************

    Public Const SW_SHOWNORMAL = 1
    Public Const SW_SHOWMAXIMIZED = 3
    0