Ouvrir PDF selon choix dans liste déroulante
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" _
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
bonjour, bonsoir,
peut-on déduire facilement le nom du fichier pdf associé à une référence ? est-ce tout simplement le nom de la référence suivi de .pdf ?
si oui,
moyennant quelques modifications de ton code,
la declaration de la fonction shellexecute doit être mis dans un module général
prendre la valeur de combobox pour déterminer le nom du fichier PDF à ourvir.
Bien le bonjour à toi h2so4 !
Je te remercie de prendre le temps d'y avoir jeter un oeil !! Sa fait tout de même pas mal de temps que je me casse le *** pour y en arriver et je n'y arrivait tout simplement pas.
Pour ce qui est de la déduction, en fait le nom des produits y sont copier tel quel ayant le même nom dans la liste de choix que dans le répertoire indiqué. Qu'entends-tu par "pdf associé à une référence" ou l'inverse "le nom de la référence suivi de .pdf"
Car dans ma liste de choix, l'utilisateur n'y vois que les choix, par exemple:
100LL -- En
100LL -- Fr
12 Sodium Hypochlorite -- En
13083-25 -- En
2216 Gray A-B -- En
2216 Gray A-B -- Fr
........
Dans le répertoire associé, ces même nom sont inscrit de la même façon aussi. Sans y voir pour autant le ".pdf", même s'il y est, bien évidement
Je ne sait pas si je répond adéquatement à la question à laquelle tu me pose, sinon explique moi d'une autre manière pour que je la comprenne car je ne sait pas si ce,st le fait d'être le matin chez moi, 7h24 a.m. Mais ouff fatigué moi là ce matin hiihhi.
Pour ce qui est de la fonction ShellExecute, elle était au départ, avant la modif que j'avais faite, dans un autre module. J'avais fait quelques essaies en fonction d'ouvrir selon tel ou tel donnée et oui cela fonctionnait, mais je n'était pas capable de faire ouvrir les autres donnée. Je ne pouvait que marquer le chemin d'une donnée spécifique, sa localisation, afin qu'elle s'ouvre lorsque je cliquait dessus, mais je ne me voyait pas y inscrire 1600 chemin d'accès, il y a surement, comme tu dit, un moyen de faire peaufiner tout cela fin d'y déterminer le nom du fichier pdf à ouvrir ainsi que ceux et celles qui se présente précédemment ou suivant dans la liste de choix.
Dans ton exemple, en y inscrivant:
Private Sub CommandButton_Consult_Click()
End Sub
Je peut afficher la donnée "100LL --En.pdf" et "100LL --Fr.pdf" .. Mais pas les précédente ni les suviantes. Normale hiih Mais je ne saurais pas comment y faire incrémenter les autres par contre... Via le SpinButton, si je sélectionne 100LL --En.pdf, je peux ouvrir le suivant 100LL --Fr.pdf sans problème, mais les suivantes ou précédentes ...
Merci beaucoup pour ton corps demain c,est vraiment très très apprécié ! Si tu savais !!!
journeydo
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
Bonsoir à tous et toutes !
Après quelques heures de recherche, j'ai tenté de m'inspirer, en adaptant mes valeurs bien-sûr
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 ...
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)
Bonsoir,
ayant été en vacances, je n'ai pas pu réagir à tes questions.
as-tu toujours besoin d'aide sur ce coup ?