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

Macros et VBA Excel Discussion :

GetOpenFilename - filtre d'après le NOM d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 22
    Par défaut GetOpenFilename - filtre d'après le NOM d'un fichier
    Bonjour

    Le code suivant permet de pointer un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename:=Application.GetOpenFilename("Excel Files (*.xls),*.xls")
    J'aimerais filtrer la sélection d'après le nom d'un seul fichier uniquement, par exemple: test.xls
    Donc, si dans mon dossier, j'ai d'autres fichiers Excel, ceux-ci ne seront pas visibles. Est-ce possible ?


    J'ai trouvé une méthode proposée ici avec FileDialog.
    On peut effectivement indiquer le nom du fichier, mais ça ne filtre pas d'après le nom du fichier, les autres fichiers restent visibles.

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Mai 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 22
    Par défaut
    Voici une solution que j'ai pu trouver

    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
    Declare Function GetOpenFileName Lib "comdlg32.dll" _
    Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
    Private Type OPENFILENAME
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End Type
    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
    Private Function SelectAFile( _
        Path As String, _
        Optional Filtre As String = "*.*") As String
    Dim OpenFile As OPENFILENAME, lReturn As Long, sFilter As String
    OpenFile.lStructSize = Len(OpenFile)
    sFilter = "Fichiers Excel (" & Filtre & ")" & Chr(0) & Filtre & Chr(0)
    With OpenFile
        .lpstrFilter = sFilter
        .nFilterIndex = 1
        .lpstrFile = String(257, 0)
        .nMaxFile = Len(OpenFile.lpstrFile) - 1
        .lpstrFileTitle = OpenFile.lpstrFile
        .nMaxFileTitle = OpenFile.nMaxFile
        .lpstrInitialDir = Path
        .lpstrTitle = "Files to Open"
        .flags = 0
    End With
    lReturn = GetOpenFileName(OpenFile)
    If lReturn = 0 Then
    Else
        SelectAFile = Trim(Left(OpenFile.lpstrFile, _
             InStr(1, OpenFile.lpstrFile, Chr(0)) - 1))
    End If
    End Function
    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
    Sub test()
    Dim File_to_Open As Variant
    Dim Path As String, Filtre As String
    'Répertoire où soit se faire la recherche
    Path = "c:\"
    'Pour le filtre, diverses combinaisons sont
    'possibles en utilisant les jockers "*" et "?"
    'dans le nom du fichier ou de l'extension
    'Exemple :
    'Tous les fichiers dont le nom débute par "mar" ayant l'extension "xlsm"
    Filtre = "Mar*.xlsm"
    'Tous les fichiers dont le nom contient la chaîne
    'de caractères "mar" ayant une extention xls, xlsx, xls,xlsb...
    Filtre = "*Mar*.xls?"
     
    Filtre = "test.xls?"
    File_to_Open = SelectAFile(Path, Filtre)
    If File_to_Open = "" Then
        MsgBox File_to_Open
    End If
    End Sub
    L'utilisation est simple, la méthode hélas un peu compliqué pour un niveau débutant comme le mien.

    ++

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

Discussions similaires

  1. Obtenir l'index d'une colonne d'après son nom
    Par The eye dans le forum VB.NET
    Réponses: 6
    Dernier message: 05/03/2008, 18h48
  2. obtenir le nom d'un fichier d'aprés son chemin
    Par dams78 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 04/01/2008, 10h56
  3. Nombres après le nom d'une image d'un script JS ?
    Par SekYo dans le forum Ruby on Rails
    Réponses: 7
    Dernier message: 28/07/2007, 04h06
  4. Appel d'une méthode d'après son nom
    Par RemiRoques dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 19/06/2006, 13h14
  5. Recherche d'un fichier d'aprés son nom
    Par gids01 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 10/05/2006, 10h19

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