bonjour je ne suis pas expert, mais
mais pour faire ça j'utilise la méthode filesearch qui retrouve l'adresse des fichiers sur tous les disques présents (et même réseau). voir même les fichiers effacés et c'est un ennui ! d'où la sous routine de vérification (si j'intègre cette vérification à la routine de base, on error goto ne fonctionne qu'une fois et ça bloque)
Notas:
1-pour abréger la recherche (surtout si réseau!)on peut filtrer Drivetype = ' 0 pour lecteurs "Inconnu" 1 pour "amovible", 2pour "fixe" 3 pour "réseau" 4 pour '"CD-ROM" 5 pour "disque-RAM"
2-ou peut également filtrer :.FileType = msoFileType (?? pour xls)
à voir
Celà me donnerait (mais très certainement perfectible!!)
''''''''''''''''''''''''''''''''''''''''''''''''''
public fichier as string
Public trouvé as String
'''''''''''''''''''''''''''recherche emplacement d'unfichier '''''''''''''''''''''''''''''''''''''''''''''
Sub localise_fichier(fichier As String)
''''''''''''''''''''
trouvé = "" 'RAZ var de recherche
Set fs = CreateObject("Scripting.FileSystemObject" )
Set lecteurs = fs.Drives
For Each lecteur In lecteurs 'parcourir lecteursmémoires successifs
If lecteur.IsReady And lecteur.Drivetype = 2 Then
With Application.FileSearch
.NewSearch
.LookIn = lecteur & "\" 'car "\" pas ajouté par fs.drives
.SearchSubFolders = True
.Filename = fichier
.MatchTextExactly = False'ou true
.FileType = msoFileTypeAllFiles 'ou filtre pour type .xls
If .Execute() > 0 Then
For I = 1 To .FoundFiles.Count
trouvé = LCase(.FoundFiles(I))
vérification trouvé '****** proc ci dessous *****
if trouvé<>"" then exit sub 'retour vers prog appelant
Next I
End If
End With
End If
Next lecteur
msgbox fichier & " Non trouvé sur cette station"
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''ce traitement est décalé en sous routine pour que "on-error-goto" puisse fonctionner plusieurs fois successives sans blocage...
Sub vérification(trouvé As String)
''''''''''''''''''''''''''''
Set fs = CreateObject("Scripting.FileSystemObject" )
on error goto vide
Set v = fs.GetFile(trouvé) 'essai accès pour vérification
exit sub
vide: 'gestion erreur....
trouvé = "" ' RAZ variable car chemin non valide
End Sub