Personnellement, je passe par un contrle ActiveX (cr en VB) qui fait
appel  la fonction "GetOpenFileName" de la dll "comdlg32.dll"
Dans mon ActiveX "fourre-tout" "JCB.OCX", j'ai inclus une commande
OpenFile(ByVal initfile As String, ByVal Filter As String, _
ByVal defExt As String, ByVal Title As String) As String
que j'utilise dans mes VBS

A titre d'exmple, et pour faire plus simple, je viens de crer un contrle
"dialog.ocx" (enregistr comme composant "dialog.file") qui ne contient que
cette fonction.

Il est librement tlchargeable ici :
http://www.bellamyjc.net/download/dialog.zip (7 ko)
Le zip contient le .ocx et toutes les sources (.ctl, .vbp, ...) que tu
pourras adapter  ta convenance.

Pour le (re)compiler, VBCCE (gratuit) suffit :
http://www.generation-nt.com/divers/click.php?url=http%3A%2F%2Fwww.bellamyjc.net%2Ffr%2Fvbsgeneralites.html%23VBCCE

Quant  son utilisation dans un VBS, elle est trs simple.

Il faut tout d'abord enregistrer l'ActiveX (une fois pour toutes) :
regsvr32 dialog.ocx
(c'est fait automatiquement si on recompile le programme)

fichier "testdialog.vbs"

------ couper ici ------
Set dlg = wscript.CreateObject("dialog.file","")
NomInitial="c:\boot.ini"
Filtre1="Texte (*.txt;*.ini;*.log)|*.txt;*.ini;*.log|"
Filtre2="Image (*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif)|"
Filtre3="Excutable (*.exe;*.com;*.scr)|*.exe;*.com;*.scr|"
Filtre4="Scripts (*.bat;*.cmd;*.vbs;*.js)|*.bat;*.cmd;*.vbs;*.js|"
Filter5="Tout fichier (*.*)|*.*"
Filtres=Filtre1 & Filtre2 & Filtre3 & Filtre4 & Filtre5
DefautExt="txt"
Titre="Test d'ouverture de fichier"
filename=dlg.Openfile(NomInitial,Filtres,DefautExt,Titre)
wscript.echo "Fichier slectionn : " & FileName
------ couper ici ------

Tu pourras modifier p.ex. la ligne suivante :
ofn.FLAGS = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_HIDEREADONLY +
OFN_PATHMUSTEXIST
qui signifie :
- nouvelle interface Explorateur de fichier
(celle de W2K/XP)
- le fichier doit exister
- la case "lecture seule" est masque
- le chemin doit exister

Tu pourras aussi (si tu veux) ajouter la fonction "GetSaveFileName" pour
enregistrer un fichier
(la structure est strictement identique) :
Private Declare Function GetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
....

NB: Dans le source, j'ai dfini toutes les constantes utilisables
(OFN_OVERWRITEPROMPT, OFN_NOVALIDATE, OFN_ALLOWMULTISELECT,
OFN_CREATEPROMPT,...)

--
May the Force be with You!
La Connaissance s'accrot quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.net *
