Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
714 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA Excel UserForm bouton pour ouvrir fichier *.hlp & path dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA Excel UserForm bouton pour ouvrir fichier *.hlp & path dynamique

n°1230197
Pongy
Posté le 25-10-2005 à 09:30:40  profilanswer
 

Salut à tous,
 
Bon je ne suis pas un pro, mais je me débrouille un peu quoi que je doute de moi en ce moment:
 
Ca fait un bail que je me creuse et que je parcours les forums pour trouver cette solution. Je trouve des posts, mais aucun code trouvé ne fonctionne ou alors je suis vraiment con (oui, je doute...).
 
Voilà mon problème:
 
Dans VBA Excel, j'ai un UserForm avec un bouton qui doit donner accès à une fichier *hlp (perso) (accessoirement je suis intéressé à la méthode pour ouvrir d'autres formats que des fichiers MS office ex: PDF ou HTML). Ce serait déjà un pas de géant (pour moi en tous les cas).  
Ensuite, la cerise sur le gâteau serait d'avoir un chemin de fichier "dynamique" (du style Application.Path   ?) afin que quel que soit l'endroit où l'utilisateur copie le dossier contenant le fichier Excel, le fichier d'aide soit recherché au bon endroit.
 
Voilà, si quelqu'un peut me donner ce coup de patte, ce serait vraiment cool et s'il peut prendre la peine de me dire où exactement je dois déposer chaque partie du code (Fonction, etc...) ça m'éviterait de me sentir vraiment con si ça ne marchais pas!
pongy@bluewin.ch

mood
Publicité
Posté le 25-10-2005 à 09:30:40  profilanswer
 

n°1230245
olivthill
Posté le 25-10-2005 à 10:40:10  profilanswer
 

Pour ouvrir un fichier "*.hlp", il faut le lancer avec le programme winhelp.exe. Par exemple :

Code :
  1. Private Sub CommandButton1_Click()
  2.   Dim rc
  3.   rc = Shell("winhelp.exe C:\\dossier_help\\toto.hlp", vbNormalFocus)
  4. End Sub

:)


Message édité par olivthill le 25-10-2005 à 10:40:48
n°1230298
Pongy
Posté le 25-10-2005 à 11:46:13  profilanswer
 

Salut Olivthill,
Eh bien, ça a les mérites du fonctionnement et de la simplicité. Je n'ai eu qu'à modifier le nom de l'exe (winhlp32.exe) et ça marche parfaitement. Qu'est ce que j'ai pu me casser le C.
 
Merci +++
 
As-tu maintenant une idée pour:
- les autres formats, spécialement le HTML
- utiliser automatiquement le répertoire contenant le fichier Excel?
 
Merci de ton aide.
A+
 
pongy

n°1230299
olivthill
Posté le 25-10-2005 à 11:46:39  profilanswer
 

Pour ouvrir un fichier "*.pdf"

Code :
  1. Private Sub CommandButton2_Click()
  2. Dim rc
  3. rc = Shell(Chr(34) & "c:\\Program Files\\Adobe\\Acrobat 6.0\\Reader\\AcroRd32.exe" & Chr(34) & "c:\\dossier_pdf\\toto.pdf", vbNormalFocus)
  4. End Sub

N.B. chr(34) est le code pour des guillemets, qui sont nécessaires car le path contient des espaces.
Evidemment, l'ennui c'est qu'Acrobat reader n'est pas toujours nommé AcroRd32.exe, et son chemin n'est pas toujours celui dont je me suis servi. Le nom et le chemin sont enregistrés dans la base de registres, mais actuellement, je ne sais pas comment aller les chercher.

n°1230365
Pongy
Posté le 25-10-2005 à 13:12:27  profilanswer
 

Merci oliv,
 
J'ai bien compris le pricnipe du shell maintenant.
Pour le fichier cible (*.hlp, *pdf ou autre), il n'y a donc pas moyen de dire dans le code qu'il est dans le dossier qui contient l'application (le fichier Excel en l'occurence)? Je pensais à une fonction Excel du type Application.path ou qqch du genre.
 
Merci encore.
 
Pongy

n°1230509
Pongy
Posté le 25-10-2005 à 14:42:53  profilanswer
 

Hello,
 
J'ai résolu tous mes pbm, si ça peut aider qqun: voici le résumé
MERCI A OLIVTHILL qui m'a mis sur les rails!
 
Ce ne sont peut-être pas les solutions les plus élégantes, mais elles fonctionnent. J'attends vos commentaires si il y a mieux:
 
En résumé pour le chemin de fichier "dynamique", je stock dans une cellule (je pourrais le faire dans une variable) le path à l'aide de la fonction Workbook.Path. Ensuite, j'empoie les méthodes suivantes:
 
Pour les fichiers *.hlp:
    Range("BB1" ) = "winhlp32.exe " & ActiveWorkbook.Path & "\Aide.hlp"
    pathelp = Range("BB1" )
    rc = Shell(pathelp)
 
Pour les fichiers *.pdf
    'Range("BB1" ) = "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe " & Chr(34) & ActiveWorkbook.Path & "\Aide.pdf"
    'pathelp = Range("BB1" )
    'rc = Shell(pathelp)
(Effectivement, les faiblesses sont le chemin, la version ou même le type d'afficheur de PDF, car tout le monde n'utilise pas le même programme et la même version de ce dernier)
 
pour les fichiers *.html:
Apparamment impossible d'utiliser la même combine avec Iexplorer.exe
(j'ignore pourquoi), mais l'astuce consiste à recourir aux liens hypertexte:
 
    'Range("BB1" ) = ActiveWorkbook.Path & "\RepertoireAide\index.html"
    'pathelp = Range("BB1" )
    'ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= pathelp, TextToDisplay:= ""
    'Range("BB1" ).Select
    'Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
 
Enfin pour l'accès au fichier HTML sur un serveur Web: idem, par lien hypertexte:
 
    'Range("BB1" ).Select
    'Selection.ClearContents
    'ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
    '    "http://???/???/???/RepertoireAide/Aide.html", TextToDisplay:=""
    'Range("BB1" ).Select
    'Selection.Hyperlinks(1).Follow NewWindow:=True, AddHistory:=False
 
Voilà, merci bien et A+
 
Pongy
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA Excel UserForm bouton pour ouvrir fichier *.hlp & path dynamique

 

Sujets relatifs
ouvrir image dans un popup aux dimensionsGénérer code sous excel
Lecture d'un fichier à accés direct...Mettre le contenu d'un fichier en variable
[DOS] extraire le nom d'un fichier pour renommer un autre[VBA Excel] lancement du prg des l'ouverture d'excel
Comment ouvrir les script de php avec mozzila firefox? 
Plus de sujets relatifs à : VBA Excel UserForm bouton pour ouvrir fichier *.hlp & path dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR