Ouvrir un document PDF via une userform

  • Initiateur de la discussion Julien
  • Date de début
J

Julien

Guest
Hey ! Bonjour a tous

Voici mon probleme... que j'aimerai bien résoudre !

Je suis dans une userform qui contient des données que j'appelle d'un tableau, dans ces donnée se trouve un lien hypertexte, et je voudrais savoir s'il été possible en selectionnant un élément de ma userform et en cliquant sur un bouton (Ouvrir par exemple) que ce lien s'active et ouvre mon fichier... Je sais pas si je m'explique bien si vous avez besoin de plus de precision faite moi signe !

Merci a tous par avance !
Julien
 

_Thierry

XLDnaute Barbatruc
Repose en paix
RE bonjour

Désolé j'ai dû m'absenter.

Il faut l'OCX suivante :
pdf.ocx

Sur un PC avec WIN XP / OFFICE PRO 2003 mais avec Acrobat Reader 6.0 et où le Programme USF_Control-ActiveX_Acrobat-PDF.xls fonctionne, elle se situe :

C:\Program Files\Adobe\Acrobat 6.0\Reader\ActiveX

Sur un Autre PC avec Win ME / OFFICE 2000 avec Adobe Version Complète 5.0 où le programme fonctionne aussi, elle se situe :

C:\Program Files\Adobe\Acrobat 5.0\Acrobat\ActiveX

Par contre je n'ai pas la version 7.0 d'Acrobat... Je pense que le problème vient de là...

Bon Courage
[ol]@+Thierry[/ol]






\
 

@Christophe@

XLDnaute Occasionnel
Re bonjour,

Rien à faire @Thierry,

J'ai pris l'ocx d'acrobat reader. J'ai remplacé le missing. Et impossible de sauver le fichier, même erreur. Je comprends vraiment pas.

Pourrais tu me copier le code du usf dans un txt, j'aimerai y jêter un oeil de plus près.

Merci

bonne journée
 

_Thierry

XLDnaute Barbatruc
Repose en paix
RE @Xtof@

Voilà le Code Module UserForm Intégral :

Option Explicit
Dim Chemin As String
Dim LastSpin As Byte

Const T As String = 'Thierry's Démo sur www.excel-downloads.com, July 2003'
'=============================================================================
'=              ATTENTION Cette procédure utilise l'activeX :              =
'=                                                                          =
'=                    Adobe Acrobat Control for ActiveX                      =
'=                                pdf.ocx                                    =
'=============================================================================
Private Sub UserForm_Initialize()
Dim ThisBookPath As String
Dim ChercheFichier As FileSearch
Dim I As Integer
On Error Resume Next
Me.Caption = T

Set ChercheFichier = Application.FileSearch
ThisBookPath = ThisWorkbook.Path
Chemin = ThisBookPath
'changer ici pour mettre un répertoire fixe
Label2 = Chemin

With ChercheFichier
  .NewSearch
  .Filename = '*.PDF'
  .LookIn = Chemin
  .SearchSubFolders =
False
  .Execute msoSortByFileName, msoSortOrderAscending
   
If .Execute > 0 Then
       
With .FoundFiles
           
For I = 1 To .Count
                ListBox1.AddItem Dir(.Item(I))
           
Next I
       
End With
   
Else
        MsgBox 'Pas de Fichier trouvé dans ' & Chemin
   
End If
End With
Set ChercheFichier = Nothing

   
With SpinButton1
        .Min = 1
        .Max = 20
        .Value = 0
   
End With
End Sub

Private Sub ListBox1_Click()
   
With Pdf1
        .LoadFile Chemin & '\' & ListBox1
        .setShowToolbar
False
   
End With
End Sub


'Ici je tente la navigation par SpinButton mais ce n'est pas fiable dans la mesure
'où je n'arrive pas à récupérer le nombre de page contenues dans le PDF... Mais bon
'on se contentera de ceci pour l'instant... A moins que quelqu'un connaisse mieux cet
'activeX... @+Thierry 26/07/2003

Private Sub SpinButton1_AfterUpdate()
LastSpin = SpinButton1
End Sub
Private Sub SpinButton1_SpinDown()
Pdf1.gotoPreviousPage
End Sub

Private Sub SpinButton1_SpinUp()
   
If SpinButton1 > LastSpin Then Exit Sub
        Pdf1.gotoNextPage
End Sub

Private Sub SpinButton1_Change()
Dim Page As Byte
Page = SpinButton1
   
Select Case Page
       
Case 1: Pdf1.gotoFirstPage
       
Case Is < LastSpin: Pdf1.gotoPreviousPage
&nbsp; &nbsp; &nbsp; &nbsp;
Case Is > LastSpin: Pdf1.gotoNextPage
&nbsp; &nbsp;
End Select
End Sub

Private Sub CommandButton1_Click()
Pdf1.printAllFit
True
End Sub

Private Sub CommandButton2_Click()
&nbsp; &nbsp;
If LastSpin = 0 Then LastSpin = 1
&nbsp; &nbsp; &nbsp; &nbsp; Pdf1.printPages LastSpin, LastSpin
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub


Il s'appuie sur cette référence 'Adobe Acrobat Control for ActiveX'...

Tiens nous au courant...
[ol]@+Thierry[/ol]
 

@Christophe@

XLDnaute Occasionnel
Re,

Merci @Thierry.

J'ai réussi à réanimer les pdf.

J'ai recommencé le usf dans un fichier vide, y ai ajouté tout les controls nécessaire et voila.
J'ai du ajouter le contrôle 'Adobe Acrobat 7.0 Browser Document' sur le form et le rénommer par PDF1 au lieu du nom donnée 'AcroPDF1'.

Ce qui pose problème dans ton fichier c'est le contrôle PDF1 que tu as sur ton USF, il fait réference à un contrôle pas repris dans la version 7.0

Si j'arrivais à ouvrir ton USF pour supprimer le contrôle et ajouter le 7.0 le tour aurait été joué, mais impossible d'ouvrir ton USF. A moins que tu connaisses un autre moyen.

Voila pour ton info.

Encore merci

Bonne soirée
 

ThomasR

XLDnaute Occasionnel
Bonsoir à tous,

et merci pour toutes ses infos.
de la même maniere que la precisé @Christophe@, j'ai reconstitué le USF pour qu'il soit compatible avec la version 7.

je suis impréssionné de la rapidité d'ouverture d'un PDF avec ce procedé car avec le soft c'est super long alors que la il s'ouvre plus vite qu'un Fichier Doc (rien que pour ca je l'utiliserai :) ).

sinon pour ma part je trouve ca bien pour la culture (Merci _Thierry pour tout ce que tu nous apprend).

mais je trouve le code assez lourd pour ne faire que de la visu sur pdf surtout si il y a des risques d'incompatibilité.

je pense que pour un debutant il est mieux adapter d'utiliser un webbrowser qui ce limite à 2 lignes de code (pour un rendu similaire) et qui surtout est compatible avec toute les version.

point négatif mais pas trop le 1er fichier PDF ouvert par un Webbrowser est aussi long qu'avec acrobat lui même :angry:
mais les suivant sont assez rapide mais moins qu'avec l'OCX proposé par _Thierry.

(ce n'est pas une critique car je suis super content du code de _Thierry, c'est just un avis pour ceux qui voudront ouvrir des PDF dans un USF) [file name=acroPDF.zip size=14680]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/acroPDF.zip[/file]
 

Pièces jointes

  • acroPDF.zip
    14.3 KB · Affichages: 137

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Thomas, @Xtof@

Tu sais Thomas, cette Démo UserForm PDF ActiveX Acrobat, si tu as lu le Fil que j'ai mis en lien dans ma première intervention dans ce Fil, a été réalisée par mes soins pour répondre à une demande précise de 'Keata' il y a plus de deux ans.

Dans ce fil, je n'ai juste mis ce lien avec la mention 'Self Explanatory' => 'Une autre approche...'

IL est exact que faire perdurer un programme dans sa compatibilité face aux nouvelles versions reste toujours très délicat.

Par contre il est toujours interressant de connaitre à l'avance que la Version 7.0 d'Acrobat posera souci aux développeurs qui comme moi utilisent sans aucun problème majeure cet ActiveX depuis la Version 4.0 d'Adobe Acrobat... Donc grace à mon amis @Xtof@ et sa persévérance je serai au courant lors du passage à Acrobat 7.0 dans ma boite.

Une parenthèse pour la Politique d'Adobe, ce n'est pas la première fois 'qu'ils nous font le coup', Cf la disparition pûre et simple du PDFWriter entre la version 5.0 et 6.0... Ce qui n'a pas manqué de faire avoir des cheveux blancs à pas mal de développeurs sur la planête. A l'époque je me suis même inscrit sur le Forum Adobe pour connaître les tenants et aboutissants...

Sinon pour ton avis, oui je peux être d'accord, car un bon vieux dicton de programmeur est et restera 'Aller Directement Toujours Au Plus Direct et Au PLus Simple'.... Si on applique ceci à la lettre, on aurait beaucoup moins de souci.

Mais, il y a toujours un mais, c'est un autre dicton, on a rien sans rien, sans prendre de risque... Si on utilise un Simple FollowHyperLink, il est certain que dans dix ans on pourra ouvrir des programmes qui n'existent pas encore aujourd'hui...

Mais on passe à coté des avantages offert par un ActiveX qui permet tout plein de choses, avec entre autre pour ma part, la possibilité de ne laisser que consulter le PDF dans un UserForm dans la même fenêtre, sans pouvoir faire autre chose si besoin est en mode Modal... Je m'en sers en tant que validation à l'affichage du PDF et soit on le Valide, soit on le Rejette, et on passe au suivant une sorte de WorkFlow...

Mais il est certain que si c'est juste pour ouvrir un PDF, FollowHyperLink suffit amplement et ce ne fait qu'une seule ligne de code.

Tout dépend toujours des besoins.

Sinon merci aussi pour tes remerciements.

Bon Lundi d'Assomption à tous et toutes
[ol]@+Thierry[/ol]
 

ThomasR

XLDnaute Occasionnel
Bonjour _Thierry, @Christophe@,

_Thierry merci pour ces precisions, mais je n'en attendais pas tant car je suis curieux de nature et je ne suis pas adepte de la facilité.

j'ai just voulu souligné un point qui me parait etre util pour ceux qui debute. au constat de ces 2 methodes que j'ai utilisé grace à toi et à d'autres acteurs de ce forum pour l'utilisation d'un webbrowser (qui est différent un Simple FollowHyperLink). et j'ai mis mon ressenti.

@Christophe@, Merci pour le travail que tu as effectué.
 

Discussions similaires

Réponses
26
Affichages
1 K
Réponses
1
Affichages
403

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote