Je me suis trompé dans le code (trop vite et pas réfléchi).
Celui-ci devrait couvrir tous les cas:
- Pas de Path
- Path limité au Drive Windows
- Path Windows
- Path Réseau
VB:
Option Explicit
Sub a()
MsgBox Dossier
End Sub
Function Dossier() As String
Dim TSpl() As String
'Fichier non encore enregistré
If Len(ThisWorkbook.Path) = 0 Then
Dossier = "N/A"
Exit Function
End If
'Séparateur Windows "\"
If InStr(ThisWorkbook.Path, "\") > 0 Then
TSpl = Split(ThisWorkbook.Path, "\")
End If
'Séparateur Réseau "/"
If InStr(ThisWorkbook.Path, "/") > 0 Then
TSpl = Split(ThisWorkbook.Path, "/")
End If
If Not (Not TSpl) Then
Dossier =...
Sub Chemin()
MsgBox ActiveWorkbook.Path, vbInformation, "Chemin du fichier"
MsgBox ActiveWorkbook.FullName, vbInformation, "Nom et chemin du fichier"
End Sub
Sub Nom_Fichier()
MsgBox ThisWorkbook.Name, vbInformation, "Nom du fichier"
' MsgBox ActiveWorkbook.Path, vbInformation, "Chemin du fichier"
' MsgBox ActiveWorkbook.FullName, vbInformation, "Nom et chemin du fichier"
End Sub
Sub Nom_Fichier()
MsgBox ThisWorkbook.Name, vbInformation, "Nom du fichier"
' MsgBox ActiveWorkbook.Path, vbInformation, "Chemin du fichier"
' MsgBox ActiveWorkbook.FullName, vbInformation, "Nom et chemin du fichier"
End Sub
Et que le nom du dossier ? Ou trouver une formule type =Droite mais mon nombre de caractère dans le nom du fichier varie. Si je trouve une solution je vous la partagerai aussi.
Le dernier sous-dossier, en VBA sur la base du code de @Dranreb:
VB:
Option Explicit
Sub a()
MsgBox Dossier
End Sub
Function Dossier() As String
Dim TSpl() As String
TSpl = Split(ThisWorkbook.Path, "\")
Dossier = TSpl(UBound(TSpl))
End Function
Sous réserve que le fichier ne soit pas directement sous une lettre de lecteur qui serait alors récupérée en tant que Dossier.
Le dernier sous-dossier, en VBA sur la base du code de @Dranreb:
VB:
Option Explicit
Sub a()
MsgBox Dossier
End Sub
Function Dossier() As String
Dim TSpl() As String
TSpl = Split(ThisWorkbook.Path, "\")
Dossier = TSpl(UBound(TSpl))
End Function
Sous réserve que le fichier ne soit pas directement sous une lettre de lecteur qui serait alors récupérée en tant que Dossier.
Cela fonctionne lorsque le fichier est sur un disque réseau. Et ne marche plus lorsqu'on le bascule sur le cloud, cela me renvoi l'adresse complète du fichier.