OVH Cloud OVH Cloud

obtenir le nom d'un fichier sans l'ouvrir

2 réponses
Avatar
dan
Bonjour =E0 tous,
Je voudrais savoir quel code permettrait d'obtenir les=20
noms des fichiers contenus dans un r=E9pertoire sans avoir =E0=20
les ouvrir (pour alimenter une Listbox).

Voic le code que j'utilise actuellement et qui marche bien=20
mais qui pr=E9sente l'inconv=E9nient de sa lenteur due =E0=20
l'ouverture des fichiers.

Sub ShowDialog()
select_lead_a_reimprimer.ListBox1.RowSource =3D ""
' Ajoute de noms de fichiers pr=E9sents =E0 la ListBox
With select_lead_a_reimprimer.ListBox1
.RowSource =3D ""
Dim StrChemin As String
Dim StrFichier As String, wkclasseur As Workbook
StrChemin=20
=3D "C:\Base_test\mae\toto\Stock_donn=E9es\stklead\"
StrFichier =3D Dir(StrChemin & "*.xls")

Do While StrFichier <> ""
Set wkclasseur =3D Workbooks.Open
(Filename:=3DStrChemin & StrFichier)
classeur =3D ActiveWorkbook.Name
.AddItem classeur
wkclasseur.Close savechanges:=3DFalse
StrFichier =3D Dir()
Application.StatusBar =3D StrFichier & " trait=E9e"
=20
Loop
End With
select_lead_a_reimprimer.Show
End Sub

merci d'avance.

2 réponses

Avatar
FxM
Bonjour,

Tu pourrais t'inspirer de ce qui suit (fonction filesearch) :
http://www.google.fr/groups?hl=fr&lr=&ie=UTF-8&oe=UTF-8&selm=%23pQDVWrXDHA.1900%40TK2MSFTNGP10.phx.gbl

Sub Filesearch1()
With Application.FileSearch
.NewSearch
.LookIn = "C:windowsmedia" '<== Put your directory here
.SearchSubFolders = False '<= setting to recurse directories
.Filename = "*.wav"
.Execute
i = 0
For Each f In .FoundFiles
i = i + 1
Cells(i, 1).Select
ActiveCell.Value = f
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=Selection
Next f
End With
End Sub

@+
FxM



dan wrote:

Bonjour à tous,
Je voudrais savoir quel code permettrait d'obtenir les
noms des fichiers contenus dans un répertoire sans avoir à
les ouvrir (pour alimenter une Listbox).

Voic le code que j'utilise actuellement et qui marche bien
mais qui présente l'inconvénient de sa lenteur due à
l'ouverture des fichiers.

Sub ShowDialog()
select_lead_a_reimprimer.ListBox1.RowSource = ""
' Ajoute de noms de fichiers présents à la ListBox
With select_lead_a_reimprimer.ListBox1
.RowSource = ""
Dim StrChemin As String
Dim StrFichier As String, wkclasseur As Workbook
StrChemin
= "C:Base_testmaetotoStock_donnéesstklead"
StrFichier = Dir(StrChemin & "*.xls")

Do While StrFichier <> ""
Set wkclasseur = Workbooks.Open
(Filename:=StrChemin & StrFichier)
classeur = ActiveWorkbook.Name
.AddItem classeur
wkclasseur.Close savechanges:úlse
StrFichier = Dir()
Application.StatusBar = StrFichier & " traitée"

Loop
End With
select_lead_a_reimprimer.Show
End Sub

merci d'avance.


Avatar
j
je ne comprends pas bien pourquoi tu tiens à ouvrir tes fichiers ????
ta méthode utilisant dir est parfaite, très rapide, et elle te donne
directement le nom du fichier (ton StrFichier)
(seul bémol, elle ne te donne pas les fichiers contenus dans les
sous-répertoires)
il te suffit donc de dire
.AddItem StrFichier
(et de supprimer les lignes devenues inutiles)




"dan" a écrit dans le message de news:
044601c36a28$70fde770$
Bonjour à tous,
Je voudrais savoir quel code permettrait d'obtenir les
noms des fichiers contenus dans un répertoire sans avoir à
les ouvrir (pour alimenter une Listbox).

Voic le code que j'utilise actuellement et qui marche bien
mais qui présente l'inconvénient de sa lenteur due à
l'ouverture des fichiers.

Sub ShowDialog()
select_lead_a_reimprimer.ListBox1.RowSource = ""
' Ajoute de noms de fichiers présents à la ListBox
With select_lead_a_reimprimer.ListBox1
.RowSource = ""
Dim StrChemin As String
Dim StrFichier As String, wkclasseur As Workbook
StrChemin
= "C:Base_testmaetotoStock_donnéesstklead"
StrFichier = Dir(StrChemin & "*.xls")

Do While StrFichier <> ""
Set wkclasseur = Workbooks.Open
(Filename:=StrChemin & StrFichier)
classeur = ActiveWorkbook.Name
.AddItem classeur
wkclasseur.Close savechanges:úlse
StrFichier = Dir()
Application.StatusBar = StrFichier & " traitée"

Loop
End With
select_lead_a_reimprimer.Show
End Sub

merci d'avance.