Référence pour CommonDialog

Bonjour,
Quelle est la référence que je doit cocher dans visual basic pour pouvoir utiliser
CommonDialog dans des programmes VBS ou HTA?
Merci

4 réponses

  1. Contributeur
    Voilà pour une recherche de fichiers et de dossiers:

    Const RETURNONLYFSDIRS = &H1 
    BIF_returnonlyfsdirs   = &H0001
    BIF_dontgobelowdomain  = &H0002
    BIF_editbox            = &H0010
    BIF_validate           = &H0020
    BIF_browseforcomputer  = &H1000
    Dim Titre, Choix, vbCrlf, Tache, ChoixMsg 
    Dim MyVar, MyInputbox
    Dim Chemin
    Dim WshShell, objDlg, oFolder, oShell
    Dim shell, item
    Set shell = WScript.CreateObject("Shell.Application")
    flag=BIF_returnonlyfsdirs
    Set WshShell = wscript.CreateObject("WScript.Shell")
    
    Titre = "Rechercher fichier et dossier"
    vbCrlf = Chr(13)
    Tache = Split("Rechercher fichier,Rechercher dossier,Quitter,",",")
       
    Do
          Choix = Inputbox("Entrez le numéro de la tâche que vous désirez effectuer :" & vbCrlf & vbCrlf & "1) Rechercher fichier" & vbCrlf & "2) Rechercher dossier" & vbCrlf &  "0) Quitter", Titre, "0")
    
    If Choix <> 0 Then
           On Error Resume Next
            Select Case Choix
                    
                    Case 1: 
    sIniDir = "C:\Windows\*" 
    sFilter = "All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|Adobe pdf (*.pdf)|*.pdf|Image files (*.gif;*.png;*jpg;*.bmp)|*.gif;*.png;*jpg;*.bmp|Html files (*.htm;*.html;*.mht)|*.htm;*.html;*.mht|" 
    sTitle = "Rechercher chemin fichier"
    rep = GetFileDlgEx(Replace(sIniDir,"\","\\"),sFilter,sTitle) 
    Chemin=rep & vbcrlf & Len(rep)
    Chemin=InputBox("Copiez pour mettre le chemin dans le presse-papier", "Rechercher chemin fichier", Chemin) 
                   
     Case 2 :
    Set oShell = CreateObject("Shell.Application") 
    Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\") 
    
    If oFolder is Nothing Then  
    	MsgBox "Abandon opérateur",vbCritical 
    Else 
      Set oFolderItem = oFolder.Self 
     Chemin=oFolderItem.path 
    Chemin=InputBox("Copiez pour mettre le chemin dans le presse-papier", "Rechercher chemin dossier", Chemin)
    End If 
      
     End Select
           
    On Error Goto 0
    End If
    
    If Choix = 0 Then
    	ChoixMsg = MsgBox("Souhaitez-vous quittez l'application ?", vbYesNoCancel, Titre)
    		If ChoixMsg = vbYes Then WScript.quit
    	End If
    Loop
    
    Function GetFileDlgEx(sIniDir,sFilter,sTitle) 
      Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""") 
      oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';" 
      GetFileDlgEx = oDlg.StdOut.ReadAll 
    End Function

    1. C'est bien pour les dossiers, mais se sont les fichiers qui m'intéressent.
      Merci quand même.
      1. Contributeur
        Bonjour,

        Si c'est pour ouvrir une boite de dialogue de recherche de dossier, voici le code à coller dans un éditeur de texte. Ensuite l'enregistrer. Afficher les extensions de fichier et renommer ce fichier en vbs à la place de txt

        Const RETURNONLYFSDIRS = &H1 
        BIF_returnonlyfsdirs   = &H0001
        BIF_dontgobelowdomain  = &H0002
        BIF_editbox            = &H0010
        BIF_validate           = &H0020
        BIF_browseforcomputer  = &H1000
        Dim  MyInputbox
        Dim  Chemin
        Dim  oFolder, oShell
        
        Set oShell = CreateObject("Shell.Application") 
        Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\") 
        
        If oFolder is Nothing Then  
        	MsgBox "Abandon opérateur",vbCritical 
        Else 
          Set oFolderItem = oFolder.Self 
         Chemin=oFolderItem.path 
        Chemin=InputBox("Copiez pour mettre le chemin dans le presse-papier", "Chercher chemin dossier", Chemin)
        End If