Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et répertoires,
maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")> et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")> et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:
el0J4BvoDHA.1948@TK2MSFTNGP12.phx.gbl...
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")> et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Dim I As Integer
I = 0
Cordialement
Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.
Voici donc un exemple qui va lister sur la feuille active tous les
fichiers
trouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier & "
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Dim I As Integer
I = 0
Cordialement
Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.
Voici donc un exemple qui va lister sur la feuille active tous les
fichiers
trouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier & "
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" <jacky.jaegEnlevez@wanadoo.fr> a écrit dans le message de
news:OVku5$zoDHA.1724@TK2MSFTNGP10.phx.gbl...
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:
el0J4BvoDHA.1948@TK2MSFTNGP12.phx.gbl...
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Dim I As Integer
I = 0
Cordialement
Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.
Voici donc un exemple qui va lister sur la feuille active tous les
fichiers
trouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier & "
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count & _
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value = .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.Voici donc un exemple qui va lister sur la feuille active tous les
fichierstrouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier &
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count &
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:
Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$M5Y4oDHA.2416@TK2MSFTNGP10.phx.gbl...
Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.
Voici donc un exemple qui va lister sur la feuille active tous les
fichiers
trouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier &
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" <jacky.jaegEnlevez@wanadoo.fr> a écrit dans le message de
news:OVku5$zoDHA.1724@TK2MSFTNGP10.phx.gbl...
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:
el0J4BvoDHA.1948@TK2MSFTNGP12.phx.gbl...
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count &
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.Voici donc un exemple qui va lister sur la feuille active tous les
fichierstrouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier &
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count &
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.Voici donc un exemple qui va lister sur la feuille active tous les
fichierstrouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier &
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count &
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:
Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$M5Y4oDHA.2416@TK2MSFTNGP10.phx.gbl...
Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.
Voici donc un exemple qui va lister sur la feuille active tous les
fichiers
trouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier &
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" <jacky.jaegEnlevez@wanadoo.fr> a écrit dans le message de
news:OVku5$zoDHA.1724@TK2MSFTNGP10.phx.gbl...
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:
el0J4BvoDHA.1948@TK2MSFTNGP12.phx.gbl...
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count &
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.Voici donc un exemple qui va lister sur la feuille active tous les
fichierstrouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier &
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:", "D:")>
et.<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count &
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky,
Pour ceux qui n'ont pas une version récente d'internet Explorer
d'installer, tu ouvres VBE (visual basic editor) de
l'application excel, et à partir de la barre des menus / outils /
références / dans la fenêtre, coche l'item :
"Microsoft Scripting Runtime" .
Salutations!
"Jacky" a écrit dans le message de
news:
Rebonjour Pascal
Je suis pas sûr d'avoir tout compris:
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Ca je sais pas faire.
Je suis sous winNT, Excel 97 SR2 ou win 98se Excel 97
J'ai une erreur de < type non défini par l'utilisateur > sur <Dim Rep As
Scripting.Folder>
Peux-tu me donner quelques explications ?
Excuse mon ignorance
Salutations
JJ
"papou" <nspm> a écrit dans le message news:Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes:Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.Voici donc un exemple qui va lister sur la feuille active tous les
fichierstrouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier
&
"trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:",
"D:")>
et.<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'êtrecomplète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count
&
_" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value > .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky,
Pour ceux qui n'ont pas une version récente d'internet Explorer
d'installer, tu ouvres VBE (visual basic editor) de
l'application excel, et à partir de la barre des menus / outils /
références / dans la fenêtre, coche l'item :
"Microsoft Scripting Runtime" .
Salutations!
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ekpbnh7oDHA.648@TK2MSFTNGP11.phx.gbl...
Rebonjour Pascal
Je suis pas sûr d'avoir tout compris:
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Ca je sais pas faire.
Je suis sous winNT, Excel 97 SR2 ou win 98se Excel 97
J'ai une erreur de < type non défini par l'utilisateur > sur <Dim Rep As
Scripting.Folder>
Peux-tu me donner quelques explications ?
Excuse mon ignorance
Salutations
JJ
"papou" <nspm> a écrit dans le message news:
eq5BWd4oDHA.2776@tk2msftngp13.phx.gbl...
Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes
:
Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$M5Y4oDHA.2416@TK2MSFTNGP10.phx.gbl...
Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.
Voici donc un exemple qui va lister sur la feuille active tous les
fichiers
trouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier
&
"
trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" <jacky.jaegEnlevez@wanadoo.fr> a écrit dans le message de
news:OVku5$zoDHA.1724@TK2MSFTNGP10.phx.gbl...
Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:",
"D:")>
et.
<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'être
complète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:
el0J4BvoDHA.1948@TK2MSFTNGP12.phx.gbl...
Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacer
ici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count
&
_
" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value > .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" <enlevezJacky.jaeg@wanadoo.fr> a écrit dans le message de
news:ulQHnouoDHA.2488@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,
mais
en ne connaissant que son nom ou une partie de son nom ??
Merci
Bonjour Jacky,
Pour ceux qui n'ont pas une version récente d'internet Explorer
d'installer, tu ouvres VBE (visual basic editor) de
l'application excel, et à partir de la barre des menus / outils /
références / dans la fenêtre, coche l'item :
"Microsoft Scripting Runtime" .
Salutations!
"Jacky" a écrit dans le message de
news:
Rebonjour Pascal
Je suis pas sûr d'avoir tout compris:
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Ca je sais pas faire.
Je suis sous winNT, Excel 97 SR2 ou win 98se Excel 97
J'ai une erreur de < type non défini par l'utilisateur > sur <Dim Rep As
Scripting.Folder>
Peux-tu me donner quelques explications ?
Excuse mon ignorance
Salutations
JJ
"papou" <nspm> a écrit dans le message news:Oups !!
Dans la procédure nommée Recherche, tu peux supprimer les 2 lignes
suivantes:Dim I As Integer
I = 0
Cordialement
Pascal
"papou" <nspm> a écrit dans le message de
news:eR$Bonjour Jacky
Effectivement ce n'est pas hyper efficace.
Dans ces conditions je te propose d'utiliser le FileSystemObject.
De cette façon, on peut également retrouver le nombre de lecteurs
présents.Voici donc un exemple qui va lister sur la feuille active tous les
fichierstrouvés sur les lecteurs fixes
(Il faut lancer VaChercher)
Cordialement
Pascal
Dim Lecteur As Scripting.Drive
Dim FSO As Scripting.FileSystemObject
'Ajouter une référence à Microsoft Scripting RunTime
'(C:WINNTSYSTEM32scrrun.dll sur W2000)
Sub VaChercher()
Dim Rep As Scripting.Folder
Dim Emplacement As String
Dim LeFichier As String
LeFichier = "Class*.xls"
Dim L As Integer
Set FSO = New Scripting.FileSystemObject
L = 0
For Each Lecteur In FSO.Drives
If Lecteur.DriveType = Fixed Then
L = L + 1
Emplacement = Lecteur & ""
ActiveSheet.Cells(1, L).Value = "Fichiers nommés " & LeFichier
&
"trouvés sur " & Emplacement
Recherche LeFichier, Emplacement, L, True
End If
Next Lecteur
Set FSO = Nothing
End Sub
Sub Recherche(NomduFichier As String, NomduRepertoire As String, L As
Integer, SousDossier As Boolean)
Dim LeRepertoire As Scripting.Folder
Dim SousRep As Scripting.Folder
Dim Fichier As Scripting.File
Dim I As Integer
I = 0
Set FSO = New Scripting.FileSystemObject
Set LeRepertoire = FSO.GetFolder(NomduRepertoire)
For Each Fichier In LeRepertoire.Files
If Fichier.Name Like NomduFichier Then
r = ActiveSheet.Cells(65536, L).End(xlUp).Row + 1
ActiveSheet.Cells(r, L).Value = Fichier.Path
End If
Next Fichier
ActiveSheet.Columns(L).EntireColumn.AutoFit
If SousDossier Then
For Each SousRep In LeRepertoire.SubFolders
Recherche NomduFichier, SousRep.Path, L, True
Next SousRep
End If
Set Fichier = Nothing
Set SousRep = Nothing
Set FSO = Nothing
End Sub
"Jacky" a écrit dans le message de
news:OVku5$Bonjour et merci Pascal
J'ai en retour d'une recherche avec< LesDisques = Array("C:",
"D:")>
et.<Filename = "*.xls">
Erreur d'execution 9
Index en dehors de la plage
Et bloque sur <Emplacement = LesDisques(NbDisques)>
Ces 2 disques existent.(6 au total sur mon pc)
Bien qu'il trouve un certain nombre de fichiers, la liste et loin
d'êtrecomplète.
Ne peut-on pas faire rechercher le nombre de disque présent ??
Cordialement
JJ
"papou" <nspm> a écrit dans le message de news:Bonjour Jacky
Voici un exemple à adapter (Tableau LesDisques et nom du fichier à
remplacerici = "Class*.xls")
Les fichiers trouvés sont listés sur la feuille active
Cordialement
Pascal
Sub VaChercher()
Dim LesDisques As Variant, Emplacement As String
LesDisques = Array("C:", "D:")
Set fs = Application.FileSearch
With fs
For NbDisques = 1 To 2
Emplacement = LesDisques(NbDisques)
.LookIn = Emplacement
.Filename = "Class*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
ActiveSheet.Cells(1, NbDisques).Value = .FoundFiles.Count
&
_" fichier(s) trouvé(s) sur " & Emplacement
For i = 1 To .FoundFiles.Count
ActiveSheet.Cells(i + 1, NbDisques).Value > .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier trouvé sur " & Emplacement
End If
Next
End With
End Sub
"Jacky" a écrit dans le message de
news:Bonjour à tous,
Comment en vba trouver un fichier sur plusieurs disques et
répertoires,maisen ne connaissant que son nom ou une partie de son nom ??
Merci
Voici une façon rapide de chercher les fichiers contenant un mot.
Declare Function GetLogicalDriveStrings Lib _
"kernel32" Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Dim Fichiers As Collection
Dim Lecteurs() As String
'Rechercher dans tous les lecteurs les fichiers dont le nom contient un
mot
Private Sub ChercherlesFichiersContenant()
Dim MotAChercher As String
MotAChercher = ".xls"
Cells.ClearContents
Call ListeDesLecteurs
For intLecteur = 0 To UBound(Lecteurs)
colonne = intLecteur + 1
ligne = 1
Cells(ligne, colonne).Value = Lecteurs(intLecteur)
Set Fichiers = New Collection
Call DirRep(Lecteurs(intLecteur), MotAChercher)
For intFichier = 1 To Fichiers.Count
ligne = ligne + 1
Cells(ligne, colonne).Value = Fichiers.Item(intFichier)
Next intFichier
Set Fichiers = Nothing
Next intLecteur
End Sub
Private Sub DirRep(NomRep As String, strContenu As String)
Dim Dossiers As New Collection
Dim NomFic As String
Dim i As Integer
If Right(NomRep, 1) <> "" Then NomRep = NomRep & ""
On Error Resume Next
strContenu = UCase(strContenu)
NomFic = Dir(NomRep & "*.*", vbNormal Or vbDirectory)
While NomFic <> ""
If (GetAttr(NomRep & NomFic) And vbDirectory) = vbDirectory Then
If (NomFic <> ".") And (NomFic <> "..") Then
Dossiers.Add NomRep & NomFic
End If
Else
If InStr(UCase(NomFic), strContenu) > 0 Then
'If UCase(Right$(NomFic, 4)) = UCase(strContenu) Then
Fichiers.Add NomRep & NomFic
End If
End If
NomFic = Dir
Wend
' Appel récursif de la même fonction pour traiter les dossiers
While Dossiers.Count > 0
DirRep Dossiers(1), strContenu
Dossiers.Remove 1
Wend
End Sub
Sub ListeDesLecteurs()
Dim Buffer As String * 255
Dim BuffLen As Long
BuffLen = GetLogicalDriveStrings(Len(Buffer), Buffer)
TheString = Left(Buffer, BuffLen)
TheDrive = ""
DriveCount = -1
' Créer un tableau des lecteurs
For i = 1 To BuffLen
If Asc(Mid(Buffer, i, 1)) <> 0 Then _
TheDrive = TheDrive & Mid(Buffer, i, 1)
If Asc(Mid(Buffer, i, 1)) = 0 Then
DriveCount = DriveCount + 1
ReDim Preserve Lecteurs(DriveCount)
Lecteurs(DriveCount) = UCase(TheDrive)
TheDrive = ""
End If
Next i
End Sub
Voici une façon rapide de chercher les fichiers contenant un mot.
Declare Function GetLogicalDriveStrings Lib _
"kernel32" Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Dim Fichiers As Collection
Dim Lecteurs() As String
'Rechercher dans tous les lecteurs les fichiers dont le nom contient un
mot
Private Sub ChercherlesFichiersContenant()
Dim MotAChercher As String
MotAChercher = ".xls"
Cells.ClearContents
Call ListeDesLecteurs
For intLecteur = 0 To UBound(Lecteurs)
colonne = intLecteur + 1
ligne = 1
Cells(ligne, colonne).Value = Lecteurs(intLecteur)
Set Fichiers = New Collection
Call DirRep(Lecteurs(intLecteur), MotAChercher)
For intFichier = 1 To Fichiers.Count
ligne = ligne + 1
Cells(ligne, colonne).Value = Fichiers.Item(intFichier)
Next intFichier
Set Fichiers = Nothing
Next intLecteur
End Sub
Private Sub DirRep(NomRep As String, strContenu As String)
Dim Dossiers As New Collection
Dim NomFic As String
Dim i As Integer
If Right(NomRep, 1) <> "" Then NomRep = NomRep & ""
On Error Resume Next
strContenu = UCase(strContenu)
NomFic = Dir(NomRep & "*.*", vbNormal Or vbDirectory)
While NomFic <> ""
If (GetAttr(NomRep & NomFic) And vbDirectory) = vbDirectory Then
If (NomFic <> ".") And (NomFic <> "..") Then
Dossiers.Add NomRep & NomFic
End If
Else
If InStr(UCase(NomFic), strContenu) > 0 Then
'If UCase(Right$(NomFic, 4)) = UCase(strContenu) Then
Fichiers.Add NomRep & NomFic
End If
End If
NomFic = Dir
Wend
' Appel récursif de la même fonction pour traiter les dossiers
While Dossiers.Count > 0
DirRep Dossiers(1), strContenu
Dossiers.Remove 1
Wend
End Sub
Sub ListeDesLecteurs()
Dim Buffer As String * 255
Dim BuffLen As Long
BuffLen = GetLogicalDriveStrings(Len(Buffer), Buffer)
TheString = Left(Buffer, BuffLen)
TheDrive = ""
DriveCount = -1
' Créer un tableau des lecteurs
For i = 1 To BuffLen
If Asc(Mid(Buffer, i, 1)) <> 0 Then _
TheDrive = TheDrive & Mid(Buffer, i, 1)
If Asc(Mid(Buffer, i, 1)) = 0 Then
DriveCount = DriveCount + 1
ReDim Preserve Lecteurs(DriveCount)
Lecteurs(DriveCount) = UCase(TheDrive)
TheDrive = ""
End If
Next i
End Sub
Voici une façon rapide de chercher les fichiers contenant un mot.
Declare Function GetLogicalDriveStrings Lib _
"kernel32" Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Dim Fichiers As Collection
Dim Lecteurs() As String
'Rechercher dans tous les lecteurs les fichiers dont le nom contient un
mot
Private Sub ChercherlesFichiersContenant()
Dim MotAChercher As String
MotAChercher = ".xls"
Cells.ClearContents
Call ListeDesLecteurs
For intLecteur = 0 To UBound(Lecteurs)
colonne = intLecteur + 1
ligne = 1
Cells(ligne, colonne).Value = Lecteurs(intLecteur)
Set Fichiers = New Collection
Call DirRep(Lecteurs(intLecteur), MotAChercher)
For intFichier = 1 To Fichiers.Count
ligne = ligne + 1
Cells(ligne, colonne).Value = Fichiers.Item(intFichier)
Next intFichier
Set Fichiers = Nothing
Next intLecteur
End Sub
Private Sub DirRep(NomRep As String, strContenu As String)
Dim Dossiers As New Collection
Dim NomFic As String
Dim i As Integer
If Right(NomRep, 1) <> "" Then NomRep = NomRep & ""
On Error Resume Next
strContenu = UCase(strContenu)
NomFic = Dir(NomRep & "*.*", vbNormal Or vbDirectory)
While NomFic <> ""
If (GetAttr(NomRep & NomFic) And vbDirectory) = vbDirectory Then
If (NomFic <> ".") And (NomFic <> "..") Then
Dossiers.Add NomRep & NomFic
End If
Else
If InStr(UCase(NomFic), strContenu) > 0 Then
'If UCase(Right$(NomFic, 4)) = UCase(strContenu) Then
Fichiers.Add NomRep & NomFic
End If
End If
NomFic = Dir
Wend
' Appel récursif de la même fonction pour traiter les dossiers
While Dossiers.Count > 0
DirRep Dossiers(1), strContenu
Dossiers.Remove 1
Wend
End Sub
Sub ListeDesLecteurs()
Dim Buffer As String * 255
Dim BuffLen As Long
BuffLen = GetLogicalDriveStrings(Len(Buffer), Buffer)
TheString = Left(Buffer, BuffLen)
TheDrive = ""
DriveCount = -1
' Créer un tableau des lecteurs
For i = 1 To BuffLen
If Asc(Mid(Buffer, i, 1)) <> 0 Then _
TheDrive = TheDrive & Mid(Buffer, i, 1)
If Asc(Mid(Buffer, i, 1)) = 0 Then
DriveCount = DriveCount + 1
ReDim Preserve Lecteurs(DriveCount)
Lecteurs(DriveCount) = UCase(TheDrive)
TheDrive = ""
End If
Next i
End Sub