Ligne de commande ouverture d'un pdf

Fermé
cpaumier - 22 nov. 2012 à 14:07
VBACripteur Messages postés 4 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 14 mai 2013 - 23 nov. 2012 à 10:36
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



A voir également:

1 réponse

VBACripteur Messages postés 4 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 14 mai 2013
23 nov. 2012 à 10:36
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