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

VBA Excel UserForm bouton pour ouvrir fichier *.hlp & path dynamique - VB/VBA/VBS - Programmation

Marsh Posté le 25-10-2005 à 09:30:40    

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

Reply

Marsh Posté le 25-10-2005 à 09:30:40   

Reply

Marsh Posté le 25-10-2005 à 10:40:10    

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
Reply

Marsh Posté le 25-10-2005 à 11:46:13    

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

Reply

Marsh Posté le 25-10-2005 à 11:46:39    

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.

Reply

Marsh Posté le 25-10-2005 à 13:12:27    

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

Reply

Marsh Posté le 25-10-2005 à 14:42:53    

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
 
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed