Ouvrir un PDF à une page donnée

Contenu du snippet

Creer un lien pour ouvrir un PDF à une page donnée. Le lien hypertexte d'Excel, n'ouvre le PDF qu'à la 1ère page, malgrè l'ajout en fin de lien de "#page=3".
Voici un snippet qui va créer un lien dans la colonne A. Une boite de dialogue vous invite à choisir le PDF et ensuite une InputBox vous permet de choisir le numéro de la page à ouvrir.
Il suffit d'aller dans le module de la feuille concernée et de mettre ce code:

Option Explicit
Dim strPath As String
Dim ligne As Long
Dim colonne As Long
Dim page As Long
Dim nom As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then ' lien dans la colonne A, a adapter
On Error Resume Next
ligne = Target.Row
colonne = Target.Column
If Target.Value = "" Then
Ouvrir
page = InputBox("Entrez le numéro de page", "Choisir Page PDF", "1")
Cells(ligne, colonne + 2) = page
Else
nom = Target.Value 'nom fichier
strPath = Range("B" & ligne).Value 'chemin fichier
page = Range("C" & ligne).Value ' numero page
OuvrirPDF2
End If
End If
End Sub
'choisir pdf
Sub Ouvrir()
Dim intChoice As Integer
'Supprimer tous les autres filtres
Call Application.FileDialog(msoFileDialogOpen).Filters.Clear
'Ajouter un filtre personnalisé
Call Application.FileDialog(msoFileDialogOpen).Filters.Add( _
    "PDF Files Only", "*.pdf")
'faire la boîte de dialogue de fichier visible pour l'utilisateur
intChoice = Application.FileDialog(msoFileDialogOpen).Show
'déterminer quel choix l'utilisateur a fait
If intChoice <> 0 Then
    'obtenir le chemin de fichier sélectionné par l'utilisateur
    strPath = Application.FileDialog( _
        msoFileDialogOpen).SelectedItems(1)
    'le chemin du fichier dans la feuille 1
    Cells(ligne, colonne + 1) = strPath 'chemin fichier pdf
nom = Mid(strPath, InStrRev(strPath, "") + 1)
Cells(ligne, colonne) = nom 'nom pdf
End If
End Sub
'ouvrir pdf à la page exacte
Sub OuvrirPDF2()
Dim WshShell As Object, PDFExec As Object
Dim CheminReader As String
 CheminReader = "C:Program Files (x86)AdobeAcrobat Reader DCReaderAcroRd32.exe" 'adapter le chemin d'Adobe de votre pc
    Set WshShell = CreateObject("WScript.Shell")
    Set PDFExec = WshShell.Exec(CheminReader & " /a page=" & page & "=OpenActions " & strPath)
    Set PDFExec = Nothing
    Set WshShell = Nothing
 End Sub


Nouvelle version:

Option Explicit
Dim strPath As String
Dim ligne As Long
Dim colonne As Long
Dim page As Long
Dim nom As String
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then ' lien dans la colonne A, a adapter
On Error Resume Next
ligne = Target.Row
colonne = Target.Column
If Target.Value = "" Then
Ouvrir
page = InputBox("Entrez le numéro de page", "Choisir Page PDF", "1")
Cells(ligne, colonne + 2) = page
Else
nom = Target.Value 'nom fichier
strPath = Range("B" & ligne).Value 'chemin fichier
page = Range("C" & ligne).Value ' numero page
 ThisWorkbook.FollowHyperlink strPath
 SendKeys "+^n" & page & "~"
 SendKeys "{NUMLOCK}"
End If
End If
End Sub
'choisir pdf
Sub Ouvrir()
Dim intChoice As Integer
'Supprimer tous les autres filtres
Call Application.FileDialog(msoFileDialogOpen).Filters.Clear
'Ajouter un filtre personnalisé
Call Application.FileDialog(msoFileDialogOpen).Filters.Add( _
    "PDF Files Only", "*.pdf")
'faire la boîte de dialogue de fichier visible pour l'utilisateur
intChoice = Application.FileDialog(msoFileDialogOpen).Show
'déterminer quel choix l'utilisateur a fait
If intChoice <> 0 Then
    'obtenir le chemin de fichier sélectionné par l'utilisateur
    strPath = Application.FileDialog( _
        msoFileDialogOpen).SelectedItems(1)
    'le chemin du fichier dans la feuille 1
    Cells(ligne, colonne + 1) = strPath 'chemin fichier pdf
nom = Mid(strPath, InStrRev(strPath, "") + 1)
Cells(ligne, colonne) = nom 'nom pdf
End If
End Sub



Bonne programmation

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.