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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
Declare Function SearchTreeForFile _
Lib "IMAGEHLP.DLL" ( _
ByVal Lecteur As String, _
ByVal Fichier As String, _
ByVal RetourChemin As String) As Long
Public Chemin As String
Sub ChercherFichier()
Dim Fichier As String
'va d'abords chercher le chemin dans le nom
'une erreur est générée si inexistant
On Error Resume Next
Chemin = Left(Right(ActiveWorkbook.Names("Chemin").Value, _
Len(ActiveWorkbook.Names("Chemin").Value) - 2), _
Len(ActiveWorkbook.Names("Chemin").Value) - 3)
'si erreur, recherche sur les disques ce qui peut prendre
'pas mal de temps car tous les lecteurs sont passés en revu..!
If Err.Number <> 0 Then
Fichier = InputBox("Veuillez indiquer le nom du fichier avec son extension à chercher dans le PC !" _
& vbCrLf & _
"Attention, ceci peut prendre plusieurs minutes", "Recherche de fichier.")
If Fichier = "" Then Exit Sub
Chemin = Dossiers(Fichier)
'si le fichier a été trouvé, stocke le chemin dans un nom
If Chemin <> "" Then
ThisWorkbook.Names.Add "Chemin", Chemin
Else
MsgBox "Fichier introuvable !"
End If
End If
End Sub
Public Function Dossiers(Fichier As String) As String
Dim Fso As Object
Dim Lect As Object
Dim Pos As Long
Dim Retour As Boolean
Dim Tampon As String
If Fichier = "" Then
MsgBox "Vous devez préciser le fichier à chercher avec son extension !", , "Recherche de fichier."
Exit Function
End If
Set Fso = CreateObject("Scripting.FileSystemObject")
For Each Lect In Fso.Drives
Tampon = Space(255)
Retour = SearchTreeForFile(Lect & "\", Fichier, Tampon)
If Retour = True Then
Pos = InStr(Tampon, Chr(0))
If Pos <> 0 Then
Tampon = Left(Tampon, Pos - 1)
End If
Dossiers = Left(Tampon, InStrRev(Tampon, "\"))
Exit Function
End If
Next Lect
End Function |