XL 2016 Ouvrir un fichier .pdf par macro

loicoss

XLDnaute Junior
Bonjour le forum,

Comme indiquer dans le titre du sujet, je suis à la recherche d'une macro me permettant l'ouverture d'un fichier .pdf se trouvant à la racine du dossier de mon fichier excel.

En vous remerciant par avance.
 

soan

XLDnaute Barbatruc
Inactif
=>Patrick

tu as écrit : « .FollowHyperlink doit visiblement passer par une passerelle » ; je ne sais pas ce que tu appelles une passerelle ; je connais les passerelles de bois pour franchir un précipice dans la jungle amazonienne, mais une passerelle en informatique, mystère !

tu as écrit : « avec ton wait c'est le message de sécurité que j'ai maintenant » ; je ne vois pas de quel message de sécurité tu parles ; ou peut-être celui-ci : « attention : ne vous balancez pas sur la passerelle de bois ou elle risque de se détacher et vous finirez au fond du ravin ».

tu as écrit : « et puis wait 1 seconde non mais ça va pas non !!! » ; ben quoi, 1 seconde, c'est tout juste 1000 millisecondes. 😜


j'ai compris que &H11 est le code hexa de la touche Ctrl et que &H2 est le relâcher de cette touche, mais les "JJJJJ" et les 0, mystère ! je m'demande bien où tu vas chercher tout ça, lolllllll ! 😅 c'est une instruction bien compliquée juste pour éviter la rémanence de la touche Ctrl, mais en tout cas, ça marche super bien ! et pour tes deux codes VBA ! le 2ème est effectivement un peu plus rapide !!!

j'ai pas compris non plus pourquoi y'a On Error Resume Next pour le 2ème code VBA ; quelle est l'erreur qui peut survenir ?

j'ai adapté à mon fichier Essai.pdf, et en enlevant 2 paires de parenthèses inutiles :
VB:
Sub Essai1()
  ExecuteExcel4Macro "CALL(""user32"",""keybd_event"",""JJJJJ""," & &H11 & ", " & 0 & ", " & &H2 & ", " & 0 & ")"
  CreateObject("Shell.Application").Open ThisWorkbook.Path & "\Essai.pdf"
End Sub

Sub Essai2()
  On Error Resume Next
  ExecuteExcel4Macro "CALL(""user32"",""keybd_event"",""JJJJJ""," & &H11 & ", " & 0 & ", " & &H2 & ", " & 0 & ")"
  CreateObject("WScript.Shell").Run ThisWorkbook.Path & "\Essai.pdf"
End Sub

tu as droit à un autre "J'adore" pour ces 2 super-solutions ! 😉 (sur ton post #24) ; j'ai mis aussi un autre "J'adore" pour toutes les infos de ton post #20.



tu as écrit : « la solution de Soan (wait 1 seconde) marche pas si on reste appuyé sur CTRL » ; exact, j'ai pu le vérifier, mais en pratique, je ne garde pas longtemps le doigt appuyé sur la touche Ctrl. 😉

tu as écrit : « teste une de mes solutions, plus de soucis de latence , même en restant appuyé sur CTRL » ; exact, je confirme : j'ai pu le vérifier aussi. 👍

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
=>Staple

justement, j'voulais t'en parler, de ton post #27 ; quand tu fais Ctrl puis e au lieu de Ctrl+e ça m'rappelle qu'il y a une option de Windows, je sais plus où ni laquelle au juste, qui est pour aider ceux qui ont du mal à appuyer sur deux touches en même temps ; c'est en lien avec les options d'ergonomie, et ça doit être vers les options de paramétrage des touches rémanentes ; je pense que tu as dû activer cette option. 😉

moi aussi, d'habitude, j'ouvre les fichiers pdf en faisant dessus un double-clic (ou un seul clic puis Entrée). :) mais j'préfère les jus d'fruits à la bière. 😜 (même si la bière est maltée) ; l'antésite aussi, c'est très bon ; c'est comme du sirop : faut en mettre que quelques gouttes et les diluer dans l'eau ; c'est à base de réglisse et c'est très désaltérant ! (surtout en été !)

y'a plusieurs parfums, par exemple à la menthe ou au citron ; y'a aussi à l'anis, mais j'ai pas aimé ; peut-être que toi tu aimeras ? au tout début, l'antésite était vendu uniquement dans les pharmacies, mais maintenant, tu en trouves facilement dans les supermarchés, dans le même rayon que celui des sirops.

Image.jpg

dans la réalité les bouteilles ont la même taille ; elles sont petites car c'est concentré ; c'est sans sucre et sans alcool ; tu vois ces bouteilles comme ça dans le rayon : y'a pas d'carton autour (même si c'était le cas au début), y'a juste un plastique rigide autour du bouchon.​

soan
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour @soan
j'ai compris que &H11 est le code hexa de la touche Ctrl et que &H2 est le relâcher de cette touche, mais les "JJJJJ" et les 0, mystère ! je m'demande bien où tu vas chercher tout ça, lolllllll ! 😅 c'est une instruction bien compliquée juste pour éviter la rémanence de la touche Ctrl, mais en tout cas, ça marche super bien ! et pour tes deux codes VBA ! le 2ème est effectivement un peu plus rapide !!!

pour l'explication
ExecuteExcel4Macro ("CALL(""nom de la dll"",""nom de l'api"",""JJJJJ""," & code touche& ", " & bscan & ", " & up ou down & ", " & info & ")")

pour le "JJJJJ" la lettre J c'est pour les numériques et byte et double il y a "C" aussi

en fait il représente une déclaration abrégée
en effet quand tu déclare les api les arguments ,c'est "byval truc as machin,byval etc...."

un J pour le return (même si c'est une déclare sub) et un j pour chaque argument
selon les api les lettre changent c'est en fonction du type des arguments
et les api qui renvoie un long ou un double comme les apis pour les fenêtre on rajoute un "j" en plus

pour certaines api , des fois ça devient plus complexe


c'est vrai que codé comme ça ça parait compliqué mais l'avantage c'est que c'est passe partout tu refile la fonction a qui tu veux ,sur le system 32 ou 64 c'est pareil

pour que tu comprenne
voila déclaration en bon est du forme
VB:
Declare Sub keybd_event Lib "user32" Alias "keybd_event" ( ByVal bVk As Byte,ByVal bScan As Byte,ByVal dwFlags As Long,ByVal dwExtraInfo As Long)''ici on met pas de return c'est une sub
en gros ce que je fait dans la macro4
Code:
keybd_event Declare Sub keybd_event Lib "user32" Alias "keybd_event" ( J,J,J,J)J
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Patrick, le fil,

merci pour ton explication sur la syntaxe de ExecuteExcel4Macro ("CALL(... & ")") avec les déclarations abrégées lettres « J » et « C ». 👍

si tu regardes le spoiler de mon post #33 tu pourras voir une boisson qui est très désaltérante, surtout en été. ;)



@loicoss : merci pour ton retour d'infos, et bonne journée à toi aussi. 🍀

soan
 

MJ13

XLDnaute Barbatruc
Bonjour à tous

En général, J'utilise ce code pour ouvrir un fichier à partir d'Excel.

Ex: en ayant le chemin et le nom de fichier dans la cellule:

VB:
Sub Ouvre_Cell()
Lien = ActiveCell
Shell ("Explorer.exe " & Lien), vbMaximizedFocus
End Sub
 

soan

XLDnaute Barbatruc
Inactif
Bonjour job75, le fil,

j'ai relu ton post #22 ; pour ton message d'erreur "Certains fichiers peuvent contaminer ou endommager votre ordinateur. Etc..." la seule explication que je vois est celle-ci : tu as une très ancienne version de Reader qui comporte une faille de sécurité, et ton navigateur affiche ce message pour t'en protéger ; donc si tu upgrades ton Reader, le message ne devrait plus apparaître ; j'ai vérifié que j'ai la toute dernière version :

Adobe Acrobat Reader DC 2021.001.20138​

soan
 

job75

XLDnaute Barbatruc
Bonjour soan, le fil,

Je suis incapable de dire quelle est ma version d'Adobe Acrobat Reader.

Les seuls fichiers PDF que j'ai sur mon ordi sont ceux que j'ai créés à partir d'Excel ou Word ou que j'ai téléchargés à partir de ma messagerie.

Quand j'ouvre ces fichiers PDF il n'y a aucun menu Aide permettant de connaître la version.

Mon ordi ASUS a moins de 2 ans et j'ai Office 2019.

A+
 

soan

XLDnaute Barbatruc
Inactif
@job75

* toutes les infos qui vont suivre ci-dessous sont indépendantes de la marque de ton PC, et indépendantes d'Office 2019 ; c'est uniquement par rapport à mon Windows 7 et mon Reader DC.

* va sur le bureau de Windows, appuie sur la touche Windows, et tape « reader » ; tu dois voir que ça a sélectionné ton programme Reader, comme ceci :

Image 1.jpg


ou tape « adobe » ou « acrobat » : tu auras peut-être « Adobe Acrobat 8.1 »

* appuie sur Entrée pour lancer le programme ; avec ma version, le titre de la fenêtre est : « Adobe Acrobat Reader DC (32-bit) » ; clique sur le menu Aide / A propos d'Adobe Acrobat Reader DC...

Image 2.jpg


ça affiche ces infos :

Image 3.jpg




* il y a aussi :

Image 4.jpg


et comme j'ai la toute dernière version, ça affiche :

Image 5.jpg


sur ton PC, ça va très probablement rechercher la dernière version et l'installer. :)

soan
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

[Pour infos]
Le message cité par job75 n'a rien à voir avec la version d'Acrobat.
C'est un message d'alerte généré par Excel (en rapport avec les liens hypertexte)
On peut reproduire ce message avec le test ci-dessous
VB:
Sub Test()
Dim sPath
sPath = "C:\Users\Lambda\test.xld"
ThisWorkbook.FollowHyperlink sPath
End Sub
oui, celui-ci
VB:
Sub Test_B()
Dim sPath
sPath = "C:\Users\Les\Carottes\Sont\cui.tes"
ThisWorkbook.FollowHyperlink sPath
End Sub
NB: Exécuter les macros sans changer la variable sPath.
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Staple,

tu as écris que le message d'erreur est généré par Excel ; mais en fait, je crois que ça arrive plutôt de façon indirecte quand VBA exécute .FollowHyperlink : ça fait un appel au navigateur pour rechercher le lien et c'est que le navigateur affiche le message d'erreur, pas Excel ! (mais je peux me tromper)

par contre, je suis tout à fait sûr des infos que j'ai données à job75 dans mon post #40 s'il veut connaître la version exacte de son logiciel Adobe Reader, et s'il veut installer la toute dernière version ; il aura alors la même version que la mienne : « Adobe Acrobat Reader DC Version 2021.001.20138 ».​

soan
 

soan

XLDnaute Barbatruc
Inactif
@job75

alors va dans le Panneau de configuration de Windows et clique sur « Programmes et fonctionnalités » ; dans la liste des programmes installés sur ton PC, tu devrais avoir une ligne qui commence par Adobe vu que c'est la société éditrice du logiciel Reader ; dans ma liste, j'ai tout ceci (sur une seule ligne, et en 5 colonnes) :

* Nom : Adobe Acrobat Reader DC - Français
* Éditeur : Adobe Systems Incorporated
* Installé le : ../../..
* Taille : 388 Mo
* Version : 21.001.20138

sur mon PC, ce logiciel est dans le dossier "C:\Programs Files (x86)\Adobe" ; c'est le dossier d'installation par défaut ; à tout hasard, si tu ne le vois pas à cet endroit, regarde dans le dossier des applications 64 bits : "C:\Programs" ; tu aurais alors : "C:\Programs\Adobe".



si tu l'trouves toujours pas, j'commence à croire que t'as une appli Reader fantôme, lollllllll ! 😅 ton PC est p't'être hanté ? 👻 autre possibilité (même si j'y crois pas trop) : Reader ne serait pas installé sur ton PC et tu aurais seulement l'Extension Reader, qui serait dans les Extensions de ton navigateur internet.


Au cas où vraiment tu n'as pas Reader sur ton PC, tu peux le télécharger ICI ; tu verras ceci :

Image.jpg


si tu veux la version gratuite, utilise le bouton « Télécharger » de la 3ème case de droite.

soan
 
Dernière édition:

Discussions similaires