Ouvrir PDF selon choix dans liste déroulante

journeydo

XLDnaute Nouveau
Bien le bonjour à vous cher XCELlent collègue !!

Je me demandais si un bon samaritain saurait me renseigné.

Je suis présentement en train de travailler dans un USF avec l'aide d'une liste déroulante et d'un bouton appelé : "Consult" . Je me demandais comment faire pour que , lorsque je sélectionne une donnée de ma liste déroulante et que je clique sur le dit bouton "Consult" , que cela m'ouvre le fichier .PDF en question lié avec la donnée choisi. Cette liste déroulante étant déjà répertorié dans mon classeur.
En plus clair, si je prend par exemple:

Fichier de la liste déroulante: 3M Finess-It Easy -- En.pdf
Chemin du fichier originale : H:\2-SST\...\New MSDS\

Étant donnée aussi que plusieurs utilisateurs selon plusieurs poste différent n'utilisant pas la même version d'Acrobat, je me doit bien d'utiliser ShellExecute comme ceci non ? :

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
Const SW_SHOWNORMAL = 1


Croyez-vous que je devrait passer autrement, doit par lien hypertext ? Je ne voulait pas utiliser cette méthode au départ étant donné que je devais entrer manuellement tous les liens références à ces .pdf car il doit y en avoir plus de 1600 environ. Est-ce que la méthode par ouverture d'un .pdf par un bouton semble trop compliqué car après avoir chercher maintes et maintes fois sur différents forum et sur la "toile" oufff quel galère !!! .. Devrais-je tout simplement utiliser le lien hypertext, car je tenais bien à ce fameux petit bouton puisque pour y arriver à la liste déroulante, je passe par une feuille Xcel. Et lorsque l'on cliquait sur un bouton, une macro ouvrant un USF s'affiche alors, donc j'aimerais bien conserver cela dans la mesure du possible.

Je joint à ma demande d'aide un exemple basé sur l'original.

En passant, afin d'arriver au bon endroit, l'utilisateur doit ouvrir le ficher Xcel, cliquer sur "Consult MSDS". À partir de là, l'USF s'ouvre et il sélectionne la donnée voulu et ainsi cliquer sur "Consult".


Un gros merci à ceux et celles qui prendrons la peine de lire ce post !!

journeydo

:eek: Milles Merci !!!! :eek:
 

Pièces jointes

  • MSDS V3.5.xlsm
    48.9 KB · Affichages: 55
  • MSDS V3.5.xlsm
    48.9 KB · Affichages: 63
  • MSDS V3.5.xlsm
    48.9 KB · Affichages: 60

Yaloo

XLDnaute Barbatruc
Re : Ouvrir PDF selon choix dans liste déroulante

Bonsoir journeydo, le forum,

Voici ton fichier modifié, chez moi ça fonctionne correctement.

A te relire

Martial
 

Pièces jointes

  • MSDS V3.5.xlsm
    50.1 KB · Affichages: 74
  • MSDS V3.5.xlsm
    50.1 KB · Affichages: 77
  • MSDS V3.5.xlsm
    50.1 KB · Affichages: 77

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour à toi Martial.

Par chez moi, cela ne fonctionne pas on dirait bien. Il m'amène à :

Erreur d'execution '-2147352751 (80020005)'
Impossible de définir la propriété Value. Le type ne correspond pas.


Pourtant je n'avais pas cet erreur auparavant.

Cependant je tient à te remercier beaucoup pour ton aide.
J'air reçu la réponse à ce que je cherchais cependant car quelqu'un sur un autre forum ma bcp aidé à plancher sur ce que je cherchais et en peaufinant le tout c'est fait et cela fonctionne comme je le veux, enfin presque.. Me reste quelques petits trucs. Je t'envoi un second message après celui-ci avec ce que j'ai renvoyé comme message ailleurs sur un autre forum ainsi que le fichier. si tu veux tester par curiosité .... , car je dois partir et revenir hiihhi Pause café oblige ;) ... Encore une fois , MERCI !!!

journeydo:rolleyes:
 

Pièces jointes

  • erreur execute.png
    erreur execute.png
    35.2 KB · Affichages: 75
  • probleme execute.png
    probleme execute.png
    12.9 KB · Affichages: 72

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

****Copie de discussion tel qu'inscrite sur l'autre forum, et ce, sans modification****

___________________

Je viens de refaire quelques tests, et oups.. désolé, ce que tu ma fait fonctionne parfaitement !! Il n'y en avait qui ne fonctionnait pas, mais c'était tout à fait normal car en fait, il y a des données comme par exemple :

3M Safety Walk -- Fr Qui se retrouve à être dans le répertoire ---- > H:\2-SST\[...]\Fiches signalétiques PDF\New MSDS

Et

3M EC-1458 -- En Qui se retrouve à être dans le répertoire ---- > H:\[...]\Fiches signalétiques PDF

Donc des répertoires différents, étant donnée que mon supérieur veux que les nouveaux produits soit sous l'attente d'une "probation d'inspection" avant la mise sur le dossier [...]\New MSDS ... Donc ce n'est pas grave, car avant la "mise en service officiel" du classeur, cela ne dérange pas, ils seront déplacés avant.

Mais est-ce que je pourrais par exemple y indiquer dans le code avec un
"SI" la donnée n'est pas dans le répertoire [...]\Fiches signalétiques PDF\New MSDS alors,
cela recherche dans [...]\Fiches signalétiques PDF\ ,
"SI" pas dans [...]\Peinture PDF\ ... alors rechercher dans [...]\Peinture PDF\New MSDS

Et "SI" la donnée est toujours dans la liste déroulante mais ne la retrouve pas dans les répertoire, d'envoyer un msgbox indiquant que la donnée n'y est pas et blah blah blah et de proposer la recherche manuel dans H:\[...] ........ ?


Je suis en train de regarder tout ça. Je sais renvoyer un msgbox mais au niveau des conditions "SI" j'ai un peu de misère, moins dans l’ouverture directe, mais en plein milieu d'un code on dirait que je n'y voit plus rien... Vu mon niveau débutant en VBA, je ne connais que quelques bases et notions mais je sais tout de même bien me débrouiller si l'on me dirige comme il le faut alors, si cela ne prend pas trop de ton temps ou ne prend pas trop le temps de quelqu'un alors cela serait bien de m'y indiquer un peu la marche à suivre, sans pour autant tout faire à ma place non plus, quoique sa aide hihihi Un coup de main c'est hyper apprécié !

Merci infiniment !!

journeydo
 

Pièces jointes

  • MSDS V3.5.1.2.xlsm
    53.8 KB · Affichages: 47

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Bonsoir à tous et toutes !

Après quelques heures de recherche, j'ai tenté de m'inspirer, en adaptant mes valeurs bien-sûr ;;) ,de ceci afin de pouvoir trouver si le fichier existe bel et bien dans mes dossiers et sous dossiers, mais cel ne semble pas fonctionner.

Private Sub Command1_Click()

Dim fso As FileSystemObject, dossier As Folder, sousdossier As Folder, fichier As File

Set fso = New FileSystemObject
Set dossier = fso.GetFolder("c:\essai")
scan dossier

End Sub

Public Sub scan(ByVal dossier As Folder)

For Each fichier In dossier.Files
Debug.Print fichier
Next

For Each sousdossier In dossier.SubFolders
Debug.Print sousdossier
scan sousdossier
Next

End Sub


J'ai aussi, activé la référence "Microsoft Scripting Runtime" dans "Outils","Références", mais par contre, lorsque je sélectionnait (scrrun.dll) , il m'est apparu sélectionné "Microsoft Office 14.0 Object Library" ... Est-ce une erreur non ? Car il me faut bien activé la Référence "Microsoft Scripting Runtime" si je veux pouvoir parcourir les sous dossiers, enfin, bref, du temps que j'utilisait Excel autrefois oui il me semble ... :roll:


Sinon, je me demandais si je pouvais passer par la méthode "GetFile" et "FileExists" ? Avez-vous des idées pour moi et/ou comment procéder !?

Merci et bonne journée les copains !! ^_^'
journeydo 8)
 

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour à toi Yaloo.

Excuse moi de n'avoir pas été clair. En résumé, ce que je recherche à faire est de trouver si un produit existe dans un répertoire et d'en afficher le fichier .pdf. Par contre, si'l n'existe pas, de rechercher dans les sous dossiers et s'il n'y est toujours pas présent, d'en afficher un MsgBox affichant que le produit ne s'y trouve pas.

Tout cela se fait dans un USF à l'aide d,une ComboBox ---> ComboBox_ProductName , qui recherchera, selon la liste de donnée, le fichier associé en .pdf. Cela fonctionne pour le faire afficher quand le fichier y est car le code est bon, mais présentement, ce qui ne fonctionne pas c'est un message d'erreur lorsque le fichier n'y est pas présent ou bien d'y afficher automatiquement la dernière version du fichier .pdf (avec un tri selon dernière date de modification).

J'espère que je ne t'ai pas mêler d'avantage :( .... Je t'envoi le fichier-joint en exemple et tu pourra ainsi mieux comprendre. L'USF dont je te parle se retrouve à apparaître lorsque l'on sélectionne le bouton "Consult MSDS" de la feuille "MENU" du fichier "MSDS V4". Il se nommera "ConsultPrint".


**En passant, je me demandais comment serait-il possible d'y indiquer dans le code de recherche du bouton "Consult" de l'USF "ConsultPrint" un "SI" la donnée n'est pas dans le répertoire [...]\Fiches signalétiques PDF\New MSDS\ alors,
cela recherche dans [...]\Fiches signalétiques PDF\ ,
"SI" pas dans [...]\Peinture PDF\New MSDS\ ... alors rechercher dans [...]\Peinture PDF\

Et "SI" la donnée est toujours dans la liste déroulante mais ne la retrouve pas dans les répertoire, d'envoyer un msgbox indiquant que la donnée n'y est pas et blah blah blah et de proposer la recherche manuel dans H:\[...] ........ ?

Merci beaucoup de ton aide !

journeydo:eek:
 

Pièces jointes

  • MSDS V4.xlsm
    57.4 KB · Affichages: 91
  • MSDS V4.xlsm
    57.4 KB · Affichages: 144
  • MSDS V4.xlsm
    57.4 KB · Affichages: 144
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour journeydo,

J'y vois plus clair en effet, mais ...

En résumé, ce que je recherche à faire est de trouver si un produit existe dans un répertoire et d'en afficher le fichier .pdf. Par contre, si'l n'existe pas, de rechercher dans les sous dossiers et s'il n'y est toujours pas présent, d'en afficher un MsgBox affichant que le produit ne s'y trouve pas.

Les autres répertoires sont-ils déjà connus ou faut-il chercher comme dans l'explorateur ?

Cela fonctionne pour le faire afficher quand le fichier y est car le code est bon, mais présentement, ce qui ne fonctionne pas c'est un message d'erreur lorsque le fichier n'y est pas présent ou bien d'y afficher automatiquement la dernière version du fichier .pdf (avec un tri selon dernière date de modification).

Tu veux chercher dans plusieurs répertoires s'il existe des versions plus ou moins récentes ?

A te relire

Martial
 

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Re-Bonjour Yaloo.


J'y vois plus clair en effet, mais ... [...] Les autres répertoires sont-ils déjà connus ou faut-il chercher comme dans l'explorateur ?[\QUOTE]

En fait, oui les répertoires sont déjà connus. La recherche se fait donc premièrement dans:
H:[...]\Fiches signalétiques PDF\New MSDS\ SI pas dans ce répertoire alors recherche dans:
H:[...]\Fiches signalétiques PDF\ SI pas dans ce répertoire alors recherche dans:
H:[...]\Peinture PDF\New MSDS\ SI pas dans ce répertoire alors recherche dans:
H:[...]\Peinture PDF\ SI pas dans ce répertoire alors affiche MsgBox Erreur.

Tu veux chercher dans plusieurs répertoires s'il existe des versions plus ou moins récentes ?[\QUOTE]

Oui, car il se peut que dans les répertoires, il y ai un .pdf, exemple 100-LL -- En.pdf qui se retrouve à la fois dans :

H:[...]\Fiches signalétiques PDF\New MSDS\ et H:[...]\Peinture PDF\New MSDS\

Mais selon l'ordre de recherche, je ne crois pas que cela causera problème.
Par contre, dans l'éventualité où 100-LL -- En.pdf se retrouverai dans l'autre répertoire ou bien dans les 3 autres et qu'il serait Plus récent dans un ou l'autre des répertoires alors il faudrait qu'il y ai un tri et qu'il en ressorte le fichier le plus récent des tous les autres. ... (Me suis-tu sur ce point car je crois que je me mêle moi même on dirait) hiihihi



Au plaisir,
journeydo
 

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour journeydo,

J'y vois plus clair en effet, mais ...

Les autres répertoires sont-ils déjà connus ou faut-il chercher comme dans l'explorateur ?

Martial


En fait, oui les répertoires sont déjà connus. La recherche se fait donc premièrement dans:
H:[...]\Fiches signalétiques PDF\New MSDS\ SI pas dans ce répertoire alors recherche dans:
H:[...]\Fiches signalétiques PDF\ SI pas dans ce répertoire alors recherche dans:
H:[...]\Peinture PDF\New MSDS\ SI pas dans ce répertoire alors recherche dans:
H:[...]\Peinture PDF\ SI pas dans ce répertoire alors affiche MsgBox Erreur.

Tu veux chercher dans plusieurs répertoires s'il existe des versions plus ou moins récentes ?

Martial

Oui, car il se peut que dans les répertoires, il y ai un .pdf, exemple 100-LL -- En.pdf qui se retrouve à la fois dans :

H:[...]\Fiches signalétiques PDF\New MSDS\ et H:[...]\Peinture PDF\New MSDS\

Mais selon l'ordre de recherche, je ne crois pas que cela causera problème.
Par contre, dans l'éventualité où 100-LL -- En.pdf se retrouverai dans l'autre répertoire ou bien dans les 3 autres et qu'il serait Plus récent dans un ou l'autre des répertoires alors il faudrait qu'il y ai un tri et qu'il en ressorte le fichier le plus récent des tous les autres. ... (Me suis-tu sur ce point car je crois que je me mêle moi même on dirait) hiihihi:rolleyes:



Au plaisir,
journeydo
 

Yaloo

XLDnaute Barbatruc
Re : Ouvrir PDF selon choix dans liste déroulante

Bonsoir journeydo, le forum,

Vois le fichier ci-dessous, dans l'UserForm, il faut changer les répertoires dans les constantes Rép1, Rép2, Rép3 et Rép4.

A te relire

Martial
 

Pièces jointes

  • MSDS V4.1.xlsm
    59.2 KB · Affichages: 52

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour à toi Yaloo et Le Forum aussi !!! Bon matin à tous et toutes, hey oui, chez moi il est 7h47 le matin !


POur le fichier que tu ma envoyé *Yaloo, cela ne semble pas fonctionner, pourtant quand j'exécutais la commande, selon ShellExecute, SW_SHOWNORMAL cela fonctionnait , et ouvrait dans mon répertoire principale, mais selon la modif dans le code qui a été fait, cela ne fait que me renvoyé à la ligne du

Else
MsgBox "Il n'y a pas de fichier correspondant à la recherche."


Je vais tenter de comprendre pourquoi. ^_^' !!

Bonne journée et merci beaucoup, cela m'aiderait vraiment grandement !!! :D
 

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour Le Forum et à toi, cher Yaloo, qui ma beaucoup beaucoup aidé !!!

Pour ceux que cela intéresserait, j'ai trouvé le problème à mon code. Cependant j'ai tout de même une erreur, puisque je peut en effet, vérifier si la donnée sélectionné apparaît dans un répertoire. De comparer celle-ci afin de pouvoir afficher la dernière version modifié entre 2 répertoire. Cependant, cela se corse si j'en ajoute plus que 2 ou si je change le répertoire de comparaison, par exemple, le répertoire Rép1 VS le répertoire Rép2, tout se passe bien, mais si je fait : le répertoire Rép1 VS le répertoire Rép3, cela ne fonctionne pas. j'envoi le code en question et aussi le fichier joint et vous verrez si vous pouvez m'aider en quoi que ce soit. Merci !!!

Code:
Option Explicit
Const Rép1 = "H:\2-SST\Fiche signalétique SST\Fiches signalétiques\Fiches signalétiques PDF\New MSDS\"
Const Rép2 = "H:\2-SST\Fiche signalétique SST\Fiches signalétiques\Fiches signalétiques PDF\"
Const Rép3 = "H:\2-SST\Fiche signalétique SST\Fiches signalétiques\Fiches signalétiques Peinture PDF\New MSDS Peinture\"
Const Rép4 = "H:\2-SST\Fiche signalétique SST\Fiches signalétiques\Fiches signalétiques Peinture PDF\"


Private Sub CommandButton_Consult_Click()
Dim DateFich As Date
Dim fs As Object, f As Object
Dim Fich$, FichExiste$, Rép$
Set fs = CreateObject("Scripting.FileSystemObject")
Fich = ComboBox_ProductName & ".pdf"

FichExiste = "": FichExiste = Dir(Rép1 & Fich)
    If FichExiste <> "" Then
    Set f = fs.GetFile(Rép1 & Fich)
    DateFich = f.DateLastModified
    Rép = Rép1
    End If

FichExiste = "": FichExiste = Dir(Rép2 & Fich)
    If FichExiste <> "" Then
    Set f = fs.GetFile(Rép2 & Fich)
        If f.DateLastModified > DateFich Then DateFich = f.DateLastModified: Rép = Rép2
    End If

'FichExiste = "": FichExiste = Dir(Rép3 & Fich)
'    If FichExiste <> "" Then
'    Set f = fs.GetFile(Rép3 & Fich)
'        If f.DateLastModified > DateFich Then DateFich = f.DateLastModified: Rép = Rép3
'    End If
'
'FichExiste = "": FichExiste = Dir(Rép4 & Fich)
'    If FichExiste <> "" Then
'    Set f = fs.GetFile(Rép4 & Fich)
'        If f.DateLastModified > DateFich Then DateFich = f.DateLastModified: Rép = Rép4
'    End If

    If FichExiste <> "" Then
    ShellExecute 0, "open", Fich, "", Rép, 1
    Else
        MsgBox "Il n'y a pas de fichier correspondant à la recherche."
    End If
End Sub

** Dans l'exemple ci-haut, j'ai enlevé la comparaison au répertoire Rép3 et Rép4 car je voulait comparé le Rép1 et Rép2, mais lorsque je tente le le faire avec Rép1 et Rép3 ou autre, cela ne fonctionne pas.

Ce que je souhaite faire en fait, c'est que lorsque je clique sur mon bouton ComboBox_ProductName, cela va rechercher la donnée la plus récente selon 4 destinations et d'en afficher la donnée sous sa forme actuelle, soit .pdf.

Merci à qui prendra le temps de me lire et en passant, passez une belle fin de journée à tous et toutes !

journeydo
 

Pièces jointes

  • MSDS V4.2.1.xlsm
    60.1 KB · Affichages: 47

Yaloo

XLDnaute Barbatruc
Re : Ouvrir PDF selon choix dans liste déroulante

Bonjour journeydo,

Je ne vois pas pourquoi ça ne marche pas, chez moi ça fonctionne correctement avec le fichier de mon post#11, puisque :

1 - je regarde si le fichier existe dans le premier répertoire, si OK alors je prends sa date de création.
2 - je regarde dans le deuxième répertoire, si le fichier existe alors je regarde si la date est supérieure au précédent fichier, si ce n'est pas le cas alors on passe on 3
3 - je regarde dans le troisième répertoire, si le fichier existe alors je regarde si la date est supérieure au fichier conserver au point précédent.
4 - idem pour le quatrième.

Il n'y a pas de comparaison directe entre le premier et le troisième, c'est une suite logique.

A+

Martial
 

journeydo

XLDnaute Nouveau
Re : Ouvrir PDF selon choix dans liste déroulante

Helooooo Le forum et Yaloo !!

Je me demandais, si le fait d'être novice en la matière me nuit car, de mon côté, cela ne semble pas fonctionner... :(

Est-ce qu'il faut que j'active quelque chose dans les RÉFÉRENCES de VBAProject avant, ou bien je laisse tel quel, car je ne sait pas pourquoi mais aucune données .pdf ne veut s'afficher. Je n'ai que le message d'erreur de la MsgBox, soit : "Il n'y a pas de fichier". J'ai même fait envoyer mon documents contenant quelques données ainsi que le classeur au complet, à un ami à moi et même chose chez lui, sa ne fonctionne pas...

Sinon, suite à mon post #13 crois-tu qu'il a possibilité que j'y aille vers ce code car je l'ai adapté, du tiens que tu m'avait donnée. Il semble très bien fonctionné, voir plutôt pas mal selon mes attentes, mais une chose ne fonctionne pas. Je peut en effet faire afficher une donnée .pdf en fonction du répertoire 1 ou 2 (Rép1 et Rép2) . Cependant, lorsque je tente d'enlever le (Guillement) de commentaire devant le code du répertoire 3 et 4 (Rép3 et Rép4), cela ne fonctionne plus et j'ai toujours le message de la MsgBox : MsgBox "Il n'y a pas de fichier correspondant à la recherche." Puisque c'est comme s'il renvoyait automatiquement vers la condition non respecté, donc le "Else" .... Un peu d'aide ou de direction pourrait bien m'aider.

Au plaisir,

journeydo ^_^' !
 

Discussions similaires

Réponses
8
Affichages
440

Membres actuellement en ligne

Statistiques des forums

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