Lien hypertexte vers pdf

annov

XLDnaute Occasionnel
Bonsoir,

J'ai un classeur avec listes de choix dans lequelles le choix apparait sous forme de lien hypetext vers un fichier pdf , jusque là pas de problème .Le soucis c'est que je souhaite ouvrir le cataloque pdf à une page prècise et non au début du pdf(afin d'éviter le défilement jusqu'à la bonne page) .J'ai recherché des solutions sur le net .Exemple en mettant #page=9. à la fin du lien mais sans succès . Apparemment je ne suis pas le seul à rechercher cette solutuion . Existe t'il une solution à ce problème ou est-ce tout simplement impossible?

Merci
 

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Bonsoir annov,

Mettez avant le ThisWorkbook.FollowHyperlink :

Code:
Dim page%
page = 9 'numéro de la page
SendKeys "+^n" & page & "~"
On envoie donc une série de touches.

A+
 

kiki29

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Salut,à adapter à ton contexte
Code:
Option Explicit

Sub Bouton1_QuandClic()
Dim Fichier As Variant
    ChDir ThisWorkbook.Path

    Fichier = Application.GetOpenFilename("Fichier PDF (*.pdf), *.pdf")
    If Fichier <> False Then OuvrirPDF2 Fichier, 7

End Sub

Private Sub OuvrirPDF2(ByVal sFichier As String, ByVal numPage As Long)
Dim WshShell As Object, PDFExec As Object
Dim CheminReader As String

    CheminReader = "C:\Program Files\Adobe\Reader 9.0\Reader\acrord32.exe"

    Set WshShell = CreateObject("WScript.Shell")
    Set PDFExec = WshShell.Exec(CheminReader & " /a page=" & numPage & "=OpenActions " & sFichier)

    Set PDFExec = Nothing
    Set WshShell = Nothing

End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Bonjour annov, kiki29, le forum,

Voici un fichier Excel avec le lien vers le fichier pdf.

La macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim page%
If Target.Address = "$B$3" Then
  page = 9 'numéro de la page
  SendKeys "+^n" & page & "~"
End If
End Sub

Edit : télécharger sur le bureau, il faudra peut-être modifier le lien...

A+
 

Pièces jointes

  • Ouvrir pdf(1).zip
    34.3 KB · Affichages: 171
Dernière édition:

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

Quelque chose d'un peu plus élaboré :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim page%
If Not Intersect(Target, [B3:B20]) Is Nothing And Target.Count = 1 Then
  page = Target.Row - 2 'numéro de la page
  SendKeys "+^n" & page & "~"
  ThisWorkbook.FollowHyperlink ThisWorkbook.Path & "\Bonjour.pdf" 'à adapter éventuellement
End If
End Sub
Fichier (2) joint.

A+
 

Pièces jointes

  • Ouvrir pdf(2).zip
    35.4 KB · Affichages: 94

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

On a sûrement remarqué que dans la version (2) il n'y avait pas de liens hypertextes...

Avec cette version (3) il y en a :

Code:
Dim page$ 'mémorise

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
page = Replace(Target, "Page ", "")
End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
SendKeys "+^n" & page & "~"
End Sub
A+
 

Pièces jointes

  • Ouvrir pdf(3).zip
    35.7 KB · Affichages: 106

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

Les liens hypertextes de la version (3) ont été créés en tirant la cellule B3 vers le bas.

Dans cette version (4), les liens ont été créés un par un.

On peut alors utiliser la propriété TextToDisplay, c'est plus simple :

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim page$
page = Trim(Replace(Target.TextToDisplay, "Page", ""))
If Right(Target.Address, 3) = "pdf" And IsNumeric(page) Then _
  SendKeys "+^n" & page & "~"
End Sub
A+
 

Pièces jointes

  • Ouvrir pdf(4).zip
    35.9 KB · Affichages: 91

annov

XLDnaute Occasionnel
Re : Lien hypertexte vers pdf

Bonjour ,à tous et merci de vos nombreuses réponses Désolé de ne pas avoir répondu plus tôt mais l'orage a décidé de tomber non loin de chez moi => plus de jus depuis hier.
Je vais essayer vos solutions et je vous tiens au courant ;

Bonne journée
 

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

Avec toutes ces solutions j'ai oculté le fait qu'à l'origine il y a une liste de choix.

Cette version (5) répare cet oubli :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s, fichier$, page$
If Target.Address = "$B$3" And Target.Cells(1, 1) <> "" Then
  On Error Resume Next 'si s(1) n'existe pas
  s = Split(Target, " Page ")
  fichier = s(0)
  page = s(1)
  If Right(fichier, 3) = "pdf" And IsNumeric(page) Then _
    SendKeys "+^n" & page & "~"
  ThisWorkbook.FollowHyperlink ThisWorkbook.Path & "\" & fichier
End If
End Sub
Mais vous avez peut-être déjà trouvé cette solution.

A+
 

Pièces jointes

  • Ouvrir pdf(5).zip
    36.3 KB · Affichages: 106

annov

XLDnaute Occasionnel
Re : Lien hypertexte vers pdf

Bonjour,
Pour le lien dans la liste j'ai fais comme ci-dessous (sources XLD) . Par contre j'ai essayé ta dernière solution mais peu importe le choix que je fais le pdf ne s'ouvre qu'a la page 1 . Peux tu me détailler ton code pour que je comprenne ce que j'ai mal fais .





Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Cel As Range
Dim ValidOk As Boolean
On Error Resume Next
ValidOk = ActiveCell.Validation.Formula1 = "=DES"
On Error GoTo 0
If Len(ActiveCell.Value) = 0 Or Not ValidOk Then Exit Sub
Set Cel = [DES].Find(what:=ActiveCell.Value, LookIn:=xlValues)
Sh.Hyperlinks.Add Anchor:=ActiveCell, Address:=Cel.Hyperlinks(1).Address
ActiveCell.Hyperlinks(1).SubAddress = Cel.Hyperlinks(1).SubAddress
End Sub


Merci
 

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

(...) le pdf ne s'ouvre qu'a la page 1 .

Pour la version (5), il faut que les items avec page soient au même format que Bonjour.pdf Page 6

C'est à dire [Nom fichier avec extension pdf][espace]Page[espace][numéro]

En effet la fonction Split utilise le séparateur " Page ".

Ou bien alors l'envoi de touches ne fonctionne pas chez vous. Mes 2 fichiers fonctionnent-ils ???

Nota : j'utilise Adobe Reader 9.

A+
 
Dernière édition:

annov

XLDnaute Occasionnel
Re : Lien hypertexte vers pdf

Re ,
J'utilise Adobe reader 10
Rien à faire , A premiere vue Les 2 fichiers fonctionnent pourtant correctement mais lorsque je clic sur le lien dans la liste il me dirige invariablement vers la page 1 et lorsque je ferme le pdf il se ré-ouvre à nouveau .
Je continue à chercher le pourquoi et je vous tiens au courant .

A+
 

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

Je viens de tester sur mon portable avec Windows 7/Excel 2010/Adobe Reader 9 en anglais.

Le raccourci clavier Maj+Ctrl+N fonctionne bien en manuel sur le fichier pdf.

Mais il faut se rendre à l'évidence, l'envoi par SendKeys n'a pas d'effet sur le fichier (j'ai aussi testé avec d'autres touches).

Dommage, car ça marchait bien sur Windows XP/Excel 2003.

Alors il faut essayer les solutions données par kiki29.

A+
 

job75

XLDnaute Barbatruc
Re : Lien hypertexte vers pdf

Re,

Il semble que sous Windows 7/Excel 2010 le problème ne vienne pas vraiment de SendKeys.

En effet les versions (3) et (4) - avec les liens hypertextes - fonctionnent très bien.

Les versions (2) et (5) - avec ThisWorkbook.FollowHyperlink - ne fonctionnent pas.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 517
Membres
103 241
dernier inscrit
Peyo33