Bonjour,
Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName" pour
permettre le choix d'un fichier dans un répertoire.
J'arrive bien à filtrer le type de fichier à afficher (extension Txt), mais
je souhaiterais également filtrer sur les fichiers dont le nom commence par
"Mar", et là je n'y arrive pas.
Merci par avance à ceux qui pourraient me mettre sur la voie.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Il y a ceci :
'Dans le haut d'un module standard, déclaration API '--------------------------------------------------- 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
'--------------------------------------------------- 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
'--------------------------------------------------- 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?"
File_to_Open = SelectAFile(Path, Filtre) If File_to_Open <> "" Then MsgBox File_to_Open End If End Sub '--------------------------------------------
"Toto" a écrit dans le message de groupe de discussion : 4b431a27$0$934$ Bonjour, Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName" pour permettre le choix d'un fichier dans un répertoire. J'arrive bien à filtrer le type de fichier à afficher (extension Txt), mais je souhaiterais également filtrer sur les fichiers dont le nom commence par "Mar", et là je n'y arrive pas. Merci par avance à ceux qui pourraient me mettre sur la voie.
Cordialement GA
Bonjour,
Il y a ceci :
'Dans le haut d'un module standard, déclaration API
'---------------------------------------------------
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
'---------------------------------------------------
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
'---------------------------------------------------
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?"
File_to_Open = SelectAFile(Path, Filtre)
If File_to_Open <> "" Then
MsgBox File_to_Open
End If
End Sub
'--------------------------------------------
"Toto" <toto@wanadoo.fr> a écrit dans le message de groupe de discussion :
4b431a27$0$934$ba4acef3@news.orange.fr...
Bonjour,
Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName" pour
permettre le choix d'un fichier dans un répertoire.
J'arrive bien à filtrer le type de fichier à afficher (extension Txt), mais
je souhaiterais également filtrer sur les fichiers dont le nom commence par
"Mar", et là je n'y arrive pas.
Merci par avance à ceux qui pourraient me mettre sur la voie.
'Dans le haut d'un module standard, déclaration API '--------------------------------------------------- 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
'--------------------------------------------------- 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
'--------------------------------------------------- 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?"
File_to_Open = SelectAFile(Path, Filtre) If File_to_Open <> "" Then MsgBox File_to_Open End If End Sub '--------------------------------------------
"Toto" a écrit dans le message de groupe de discussion : 4b431a27$0$934$ Bonjour, Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName" pour permettre le choix d'un fichier dans un répertoire. J'arrive bien à filtrer le type de fichier à afficher (extension Txt), mais je souhaiterais également filtrer sur les fichiers dont le nom commence par "Mar", et là je n'y arrive pas. Merci par avance à ceux qui pourraient me mettre sur la voie.
Cordialement GA
Toto
Ok et merci pour la célérité de la réponse. Cela correspond bien à ce que je recherchais.
Cdlt GA --------------------------------------------------------------------------------------------------- "michdenis" a écrit dans le message de news:
Bonjour,
Il y a ceci :
'Dans le haut d'un module standard, déclaration API '--------------------------------------------------- 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
'--------------------------------------------------- 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
'--------------------------------------------------- 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?"
File_to_Open = SelectAFile(Path, Filtre) If File_to_Open <> "" Then MsgBox File_to_Open End If End Sub '--------------------------------------------
"Toto" a écrit dans le message de groupe de discussion : 4b431a27$0$934$ Bonjour, Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName" pour permettre le choix d'un fichier dans un répertoire. J'arrive bien à filtrer le type de fichier à afficher (extension Txt), mais je souhaiterais également filtrer sur les fichiers dont le nom commence par "Mar", et là je n'y arrive pas. Merci par avance à ceux qui pourraient me mettre sur la voie.
Cordialement GA
Ok et merci pour la célérité de la réponse. Cela correspond bien à ce que je
recherchais.
Cdlt
GA
---------------------------------------------------------------------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OAPT4zfjKHA.4048@TK2MSFTNGP04.phx.gbl...
Bonjour,
Il y a ceci :
'Dans le haut d'un module standard, déclaration API
'---------------------------------------------------
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
'---------------------------------------------------
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
'---------------------------------------------------
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?"
File_to_Open = SelectAFile(Path, Filtre)
If File_to_Open <> "" Then
MsgBox File_to_Open
End If
End Sub
'--------------------------------------------
"Toto" <toto@wanadoo.fr> a écrit dans le message de groupe de discussion :
4b431a27$0$934$ba4acef3@news.orange.fr...
Bonjour,
Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName"
pour
permettre le choix d'un fichier dans un répertoire.
J'arrive bien à filtrer le type de fichier à afficher (extension Txt),
mais
je souhaiterais également filtrer sur les fichiers dont le nom commence
par
"Mar", et là je n'y arrive pas.
Merci par avance à ceux qui pourraient me mettre sur la voie.
Ok et merci pour la célérité de la réponse. Cela correspond bien à ce que je recherchais.
Cdlt GA --------------------------------------------------------------------------------------------------- "michdenis" a écrit dans le message de news:
Bonjour,
Il y a ceci :
'Dans le haut d'un module standard, déclaration API '--------------------------------------------------- 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
'--------------------------------------------------- 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
'--------------------------------------------------- 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?"
File_to_Open = SelectAFile(Path, Filtre) If File_to_Open <> "" Then MsgBox File_to_Open End If End Sub '--------------------------------------------
"Toto" a écrit dans le message de groupe de discussion : 4b431a27$0$934$ Bonjour, Dans le cadre d'une macro VBA, j'utilise la fonction "GetOpenFileName" pour permettre le choix d'un fichier dans un répertoire. J'arrive bien à filtrer le type de fichier à afficher (extension Txt), mais je souhaiterais également filtrer sur les fichiers dont le nom commence par "Mar", et là je n'y arrive pas. Merci par avance à ceux qui pourraient me mettre sur la voie.