XL 2016 Récupérer le nom du dossier ou est stocké le classeur

AxelViens

XLDnaute Nouveau
Bonjour,

Je souhaiterais récupérer dans une cellule le nom du dossier ou est stocké mon classeur.

Ex :

C://User/xxx/Dossier1/Sous-Dossier1/Fichier.xlsx --> Sous-Dossier1
C://User/xxx/Dossier1/Sous-Dossier2/Sous-sous-Dossier21/Fichier.xlsx --> Sous-sous-Dossier21

J'ai essayé beaucoup de formule trouvé sur internet , mais aucune ne fonctionne chez moi ..

Si vous avez des idées..
 
Solution
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 =...

AxelViens

XLDnaute Nouveau
Bonjour.
À essayer :
VB:
Option Explicit
Function Dossier() As String
   Dim TSpl() As String
   TSpl = Split(ThisWorkbook.Path, "\")
   Dossier = TSpl(UBound(TSpl) - 1)
   End Function
Cela me renvoi 0 dans la cellule.


@st007 --> Cela ne correspond pas a la donnée que je recherche. Merci quand même de ton aide.

@Phil69970 --> Idem , je souhaite récupéré seulement le nom de dossier. Merci quand même :)
 

AxelViens

XLDnaute Nouveau
Re

Et que le nom du fichier
VB:
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

@Phil69970

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.
 

AxelViens

XLDnaute Nouveau
Toujours en formule en fonction de filename(A1)
1648802816932.png


Je ne comprend pas , juste a l'ouverture du fichier , toutes les formules plantent..
 

Dudu2

XLDnaute Barbatruc
Bonjour,

C'est quoi la question précisément ?
Je souhaiterais récupérer dans une cellule le nom du dossier ou est stocké mon classeur.
En VBA ou en formule ?

C://User/xxx/Dossier1/Sous-Dossier1/Fichier.xlsx --> Sous-Dossier1
C://User/xxx/Dossier1/Sous-Dossier2/Sous-sous-Dossier21/Fichier.xlsx --> Sous-sous-Dossier21
C'est quoi le dossier pour toi ?
- User ?
- xxx ?
- Dossier1 ?

Pour info le dossier c'est User, tous les autres sont des sous-dossiers.
 

Dudu2

XLDnaute Barbatruc
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.
 

AxelViens

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 111
Membres
112 662
dernier inscrit
lou75