Bonjour,
Si Workbooks("XXX" ).Path renvoit une erreur, c'est que le classeur n'est pas ouvert. Dans ce cas, il faut rechercher le fichier.
Soit, il est dans le répertoire courant et alors, le fichier peut être ouvert sans chemin de fichier :
Code :
- Dim NomFichier As String
- NomFichier = "Classeur1.xls"
- Workbooks.Open FileName:=NomFichier
- Chemin = Workbooks(NomFichier).Path
- Workbooks(NomFichier).Close
- 'Cela revient à écrire'
- Chemin = CurDir
- If Dir(Chemin & "\" & NomFichier) <> "" Then MsgBox Chemin
|
Dans le cas contraire, il faut rechercher le fichier par FileSearch avec recherche dans les sous-répertoires ou Dir(). C'est une opération beaucoup plus longue:
Code :
- Sub Test()
- Dim NomFichier As String
- NomFichier = "Classeur1.xls"
- With Application.FileSearch
- .NewSearch
- .LookIn = "C:\Documents and Settings"
- .SearchSubFolders = True
- .FileName = NomFichier
- .MatchTextExactly = True
- '.FileType = msoFileTypeExcelWorkbooks'
- If .Execute() > 0 Then
- For i = 1 To .FoundFiles.Count
- While InStr(pos + 1, .FoundFiles(i), "\" ) <> 0
- pos = InStr(pos + 1, .FoundFiles(i), "\" )
- Wend
- Dossier = Left(.FoundFiles(i), pos)
- MsgBox "NomFichier : " & .FoundFiles(i) & vbLf & "Dossier : " & Dossier
- Next i
- Else
- MsgBox "Aucun fichier n'a été trouvé."
- End If
- End With
- End Sub
|
Cordialement
Epéna