Listebox et affichage pdf

stienne

XLDnaute Junior
Bonjours à tous,
Je sollicite votre aide pour avancer dans ma programmation :
En effet, je souhaite afficher dans une listebox (userform) le contenu d'un répertoire ( c:\exemple) qui contient des fichiers *.pdf (nb qui varie) et afficher le fichier que je sélectionne dans cette listebox.

cordialement,
 

Jam

XLDnaute Accro
Re : Listebox et affichage pdf

Salut stienne,

Pour tout ce qui est de sélectionner le contenu d'un directory et de l'afficher dans un USF cela ne devrait pas poser de problème. En faisant une petite recherche dans le forum tu devrais trouver sans problème.

Par contre je m'interroge sur la seconde partie de ta question: Souhaites tu afficher directement dans ton USF le fichier pdf comme on afficherait une image ou juste lancer l'ouverture du lecteur d'Adobe (je lui préfère Foxit ;) ) ? Dans le premier cas il faudra avoir recours à un objet COM/ActiveX qui sache lire les fichier pdf. Pas certain qu'Adobe en fournisse un avec son lecteur. Il faut partir à la recherche de cet objet, l'ajouter en référence à ton projet et insérer l'objet dans ton USF (comme un listbox) puis après le gérer (aïe !)

Bon courage
 

bqtr

XLDnaute Accro
Re : Listebox et affichage pdf

Bonsoir stienne, jam

Si je comprends bien et si tu n'es pas sous Excel 2007 test ceci:

Code:
Private Sub CommandButton1_Click()
Unload Me
End Sub
 
 
Private Sub ListBox1_Click()
ThisWorkbook.FollowHyperlink ListBox1.List(ListBox1.ListIndex, 1) 'ouvre le fichier contenu dans la deuxième colonne (masquée) de la listbox
Unload Me
End Sub
 
 
Private Sub UserForm_Initialize()
Dim Chemin As String, i As Long
ListBox1.ColumnCount = 2 'nombre de colonne de la listbox
ListBox1.ColumnWidths = "200;0" 'largeur des colonnes, la 2ème = 0
Chemin = "C:\Documents and Settings\5909540t\Mes documents" 'Chemin du répertoire à traiter
Set fs = Application.FileSearch
      With fs
        .LookIn = Chemin
        .Filename = "*.pdf" 'filtre uniquement les fichiers pdf
           If .Execute > 0 Then
              For i = 1 To .FoundFiles.Count
                 ListBox1.AddItem Dir(.FoundFiles(i)) 'nom du fichier dans la première colonne
                 ListBox1.List(ListBox1.ListCount - 1, 1) = .FoundFiles(i) 'chemin complet du fichier
              Next
           End If
      End With
Set fs = Nothing
End Sub

Tu modifies la variable Chemin avec le chemin de ton répertoire.
La listbox se charge avec dans la 1ère colonne le nom du fichier pdf et dans la 2ème colonne son chemin.

Tu click ensuite sur un fichier dans la listbox et cela ouvre ce dernier.

A+
 

Pièces jointes

  • Ouvre PDF.zip
    10.4 KB · Affichages: 75
  • Ouvre PDF.zip
    10.4 KB · Affichages: 61
  • Ouvre PDF.zip
    10.4 KB · Affichages: 65

stienne

XLDnaute Junior
Re : Listebox et affichage pdf

Je te remercie, mais effectivement je bosse sur excel 2007.
Faut il que je post sur le forum ad oc ou y a-t-il qq'un qui puisse m'aider à modifier cette prog ?
En outre, je ne souhaite pas afficher le chemin, seul la sélection du fichier doit me permettre de lancer l'application qui ouvre le fichier pdf et ouvrir le fichier.
merci,
 

bqtr

XLDnaute Accro
Re : Listebox et affichage pdf

Re,

Voici un code qui devrait être compatible avec Excel 2007 (du moins dans la partie recherche des fichiers).

Remplace la macro Private Sub UserForm_Initialize() par celle-ci:

Code:
Private Sub UserForm_Initialize()

'Cocher la référence "Microsoft Scripting Runtime" dans le menu VBA "Outils/Références"
Dim Fso As Scripting.FileSystemObject
Dim Rep As Scripting.Folder
Dim Fich As File

ListBox1.ColumnCount = 2 'nombre de colonne de la listbox
ListBox1.ColumnWidths = "200;0" 'largeur des colonnes, la 2ème = 0

Set Fso = New Scripting.FileSystemObject
Set Rep = Fso.GetFolder("C:\Documents and Settings\XXXXX\Bureau") 'mettre ici le chemin de ton répertoire
For Each Fich In Rep.Files
  If Fso.GetExtensionName(Fich.Path) = "pdf" Then
      ListBox1.AddItem Fich.Name 'nom du fichier dans la première colonne
      ListBox1.List(ListBox1.ListCount - 1, 1) = Fich.Path 'chemin complet du fichier    
  End If
Next

Set Fso = Nothing
Set Rep = Nothing

End Sub
Ne pas oublier de Cocher la référence "Microsoft Scripting Runtime" dans le menu "Outils/Références" (quand tu es sous VBA)

Tu modifies la ligne Set Rep = Fso.Get.....avec le chemin de ton répertoire.

La 2èmè colonnes de la listbox étant masquée, tu ne vois pas le chemin du fichier, que son nom dans la 1ère colonne.

Juste un petit conseil: tu devrais mettre la version d'Excel que tu utilises dans ton profil. C'est plus facile pour les réponses.

A+
 
Dernière édition:

stienne

XLDnaute Junior
Re : Listebox et affichage pdf

super les gars ça marche du tonnerre. je progresse ...
je me rend compte que vu le nombre de fichiers, une aide à la recherche faciliterait et surtout accélererait la recherche. Est il possible de rajouter dans l'USF une texte box qui dont le contenu préciserait une partie du nom du fichier :
par exemple on tape dans la textebox "che" et apparait tous les fichiers pdf contenant "...che...".
J'ai également remarqué que lorsque je ferme le fichier pdf ouvert, il ne reviens pas sur l'usf qui a permis la sélection du fichier, y a t il un moyen d'y revenir sans relancer la macro ?

encore merci,
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Listebox et affichage pdf

Bonsoir,

J'ai ajouté le Textbox, limité le nombre de caractère maxi à 3.
Tu entres les 3ères lettres du fichier et tu valides.
Si aucun fichier trouvé, tu en es avisé par une MsgBox.
L'USF reste ouvert tant que tu ne le fermes pas.

Si tu veux rechercher des lettres quelque soit la position de celles-ci dans le nom du fichier, c'est possible en modifiant la macro. Dis moi si je dois faire la modif pour.

A+
 

Pièces jointes

  • Ouvre PDF.zip
    17.6 KB · Affichages: 58
  • Ouvre PDF.zip
    17.6 KB · Affichages: 55
  • Ouvre PDF.zip
    17.6 KB · Affichages: 45

stienne

XLDnaute Junior
Re : Listebox et affichage pdf

c'est chouette, un grand merci.
Lorsque je ferme le pdf, pas de pbm je reviens bien sur l'usf, mais il est impératif de repasser par la textbox, pas moyen de reselectionner directement un fichier dans la listbox ? (c'est du pinaillage :) !!)
Concernant la nécessité de modifier la prog, effectivement les caractères ne doivent pas nécessairement être les 3 premiers caractères du nom du fichier. est il possible d'avoir un nombre de caractères non défini ? (c'est pas impératif si cela complique trop la prog!).
je te remerci et encore bravo! ;)
 

bqtr

XLDnaute Accro
Re : Listebox et affichage pdf

Re,

Le fichier modifié. Le nombre de caractère dans le Textbox n'est pas limité. La recherche sur le nom du fichier se fait quelque soit la place des lettres dans le nom.

Par contre je ne comprends pas bien ce que tu veux dire :
Lorsque je ferme le pdf, pas de pbm je reviens bien sur l'usf, mais il est impératif de repasser par la textbox, pas moyen de reselectionner directement un fichier dans la listbox ? (c'est du pinaillage :) !!)

Tu veux quoi exactement ? Car actuellement quand tu reviens sur l'USF rien ne t'empêche de clicker sur un autre fichier pour l'ouvrir.
Tu souhaites donc être obligé de faire une autre recherche par le Textbox ?

A+
 

Pièces jointes

  • Ouvre PDF.zip
    18.1 KB · Affichages: 65
  • Ouvre PDF.zip
    18.1 KB · Affichages: 59
  • Ouvre PDF.zip
    18.1 KB · Affichages: 71

stienne

XLDnaute Junior
Re : Listebox et affichage pdf

c'est exactement ça, tout fonctionne au poil
Un grand merci. laisse tomber sur ce pinaillage, j'ai tout faux ça marche correctement !:rolleyes:
je me demandais si pour compliquer le truc il était envisageable qu'au fur et à mesure que l'on remplisse la textbox, le nom des fichiers apparaissent sans validation suivant la chaine de caractère frappée exemple :
on tape "a" tout les fichier contenant "a" s"affichent puis lorsqu'on ajoute un "t" n'appaissent plus que les fichiers comportant "at" ...
C'est pour le fun, car comme elle est la prog me convient parfaitement :p
encore milles merci
 

bqtr

XLDnaute Accro
Re : Listebox et affichage pdf

Re,

Dans ce cas tu crées la procédure suivante:
Code:
Private Sub TextBox1_Change()
End sub
Puis tu copies le texte de la macro:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) entre les deux lignes de la nouvelle macro. Que le texte, pas le nom de la macro ni le End Sub à la fin.

A+



 

chaval

XLDnaute Nouveau
Bonjour,
Je sais que ca date, mais je lance une bouteille à la mer.
La solution proposée par bqtr est parfaite mais j'aimerais pouvoir effectuer la recherche avec des sous dossiers.
Mon répertoire contient de nombreux sous dossiers et le fichier proposé ne permet pas une recherche dans les sous dossiers.
Pourriez vous m'aider svp?
 

kiki29

XLDnaute Barbatruc
Salut, à télécharger puis consulter : Liste Contributions PDF
surtout le post# 206 : Visualisation/Impression d'une liste de fichiers PDF dans une UserForm via IExplorer
Marla.jpg
 
Dernière édition:

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i