IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Boite de dialogue, sélection type de fichier


Sujet :

VBScript

  1. #1
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 438
    Points : 191
    Points
    191
    Par défaut Boite de dialogue, sélection type de fichier
    Bonjour,
    J'ai repris une fonction d'omen999 :
    En modifiant le sFilter, mais je ne peux commencer par filtrer les ofx, je suis toujours obligé de passer par tous les fichiers, ensuite la fonction permet le filtre.
    Ce que je souhaite c'est arriver dans la boite de dialogue avec les fichiers filtrés.
    Merci d'avance pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sIniDir = "D:\Downloads\*" 
    sFilter = "ofx Files (*.ofx)|*.ofx|All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|" 
    sTitle = "GetFileDlg by omen999 2014 - http://omen999.developpez.com" 
    rep = GetFileDlgEx(Replace(sIniDir,"\","\\"),sFilter,sTitle) 
    MsgBox rep & vbcrlf & Len(rep)
     
    Function GetFileDlgEx(sIniDir,sFilter,sTitle) '"no limit" Browse dialog : the global size of the parameters isn't limited anymore
        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

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 417
    Points : 5 816
    Points
    5 816

  3. #3
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 438
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Merci de votre réponse, mais j'avais déjà lu la page.
    Curieusement avec le code ci-dessous cela fonctionne, mais je ne peux rien mettre dans SInidir.
    Dans ce cas là, je souhaite savoir où se trouve par défaut le dossier d'ouverture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SIniDir = ""
    SFilter = "ofx Files (*.ofx)|*.ofx|All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|Adobe pdf (*.pdf)|*.pdf|"
    STitle = "Selectionner le fichier ofx"

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 417
    Points : 5 816
    Points
    5 816
    Par défaut
    Il y a un code que j'ai posté ICI dont un extrait est utilisé dans le code plus bas.
    Mais ce code-ci va contraindre l'utilisateur à afficher 2 boites de dialogue et choisir un dossier puis un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Option Explicit
    Call BrowseForFile
    Private Sub BrowseForFile()
        Dim oDlg, sInitDIr
        Set oDlg = CreateObject("UserAccounts.CommonDialog")
        oDlg.Filter = "Tout fichier(*.*)|*.*|Fichier texte(*.txt)|*.txt|Visual basic form(*.frm)|*.frm" & _
        "|Documents Word(*.doc;*.docx)|*.doc;*.docx|Bibliothèque(*.dll)|*.dll"
        sInitDir = SelectFolder
        oDlg.InitialDir = sInitDir
        oDlg.FilterIndex = 4 ' correspond à Documents Word, filtre par défaut
        oDlg.ShowOpen
        If oDlg.FileName = "" Then Exit Sub
        MsgBox oDlg.FileName
    End Sub
    '======================
    Function SelectFolder()
        Const BIF_returnonlyfsdirs = &H1 ' On peut mettre &H4000 pour retourner les fichiers et/ou dossiers
                     'mais une erreur se produit si on sélectionne un fichier
        Dim WSH, Item, lngFlag, Result, InitDir, DialogTitle, drv, fso, WS
     
        Set WSH = CreateObject("Shell.Application")
        lngFlag = BIF_returnonlyfsdirs
        'InitDir = "C:"
        DialogTitle = "Sélection de dossier : Pas de  Poste de travail, Favoris réseau et/ou ses sous-éléments:"
        Set Item = WSH.BrowseForFolder(0, DialogTitle, lngFlag, "")
        If Item Is Nothing Then WScript.Quit 0
        Set WS = CreateObject("WScript.Shell")
        Set fso = CreateObject("Scripting.FileSystemObject")
        If LCase(Item.Title) = "poste de travail" Or LCase(Item.Title) = "favoris réseau" Then
             MsgBox "Mauvais choix de répertoire [" & UCase(Item.Title) & "]" & vbCrLf & _
                     "Choisir un répertoire valide puis réessayer."
             WScript.Quit 0
        End If
        If LCase(Item.Title) = "mes documents" Or LCase(Item.Title) = "bureau" Then
             Result = WS.ExpandEnvironmentStrings("%UserProfile%") & "\" & Item.Title
        ElseIf Is_Value(Item) Then
           Result = Item.Title
            If Right(Result, 2) = ":)" Then
                Set drv = fso.GetDrive(Left(Right(Result, 3), 2))
                Result = drv.RootFolder
            ElseIf InStr(1, Result, ":") = 0 Then
                Result = Item.ParentFolder.ParseName(Item.Title).Path
            End If
        End If
       SelectFolder = Result
    End Function
    '================================
    Function Is_Value(obj)
       Dim stmp
        On Error Resume Next
        stmp = " " & obj
        Is_Value = (Err = 0)
        On Error GoTo 0
    End Function
    Faute de grives, on mange les merles !!

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    bonjour,
    c'est vrai que je n'ai pas donné beaucoup de détails sur la syntaxe à respecter
    pour utiliser ce code

    en réalité, le paramètre sIniDir définit à la fois le répertoire d'ouverture ET
    le 1er item actif du filtre (d'où la nécessité de placer cet item en tête de liste dans sFilter)
    c'est la raison pour laquelle mon exemple définit un sIniDir se terminant par un astérisque
    puisque le 1er item de sFilter est "All Files"

    il y a toutefois, une petite subtilité de syntaxe
    pour être reconnue, l'extension doit aussi être précédée d'un astérisque...

    dans ton cas, ceci devrait faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sIniDir = "D:\Downloads\*.*ofx"

  6. #6
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 438
    Points : 191
    Points
    191
    Par défaut Boite de dialogue, sélection type de fichier
    Merci à l_autodidacte et à omen999,
    J'ai bien le résultat désiré.
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sources] Utiliser la boite de dialogue sélection d'un fichier avec l'API
    Par omen999 dans le forum Vos Contributions VBScript
    Réponses: 4
    Dernier message: 26/01/2022, 22h22
  2. Réponses: 1
    Dernier message: 03/04/2010, 22h36
  3. Boite de dialogue pour récupération de fichier
    Par julio02200 dans le forum Access
    Réponses: 4
    Dernier message: 27/06/2006, 11h09
  4. [VB6]boite de dialogue pour selectionner un fichier
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/04/2006, 14h57
  5. Réponses: 2
    Dernier message: 01/05/2004, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo