Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 =...
OK, probablement une histoire de "/" vs "\"
VB:
Option Explicit

Sub a()
    MsgBox Dossier
End Sub

Function Dossier() As String
    Dim TSpl() As String
   
    TSpl = Split(ThisWorkbook.Path, "\")
   
    If UBound(TSpl) = -1 Then
        TSpl = Split(ThisWorkbook.Path, "/")
    End If
   
    If UBound(TSpl) = -1 Then
        Dossier = "N/A"
    Else
        Dossier = TSpl(UBound(TSpl))
    End If
End Function

Edit: En cellule écrire: =Dossier()
 
Dernière édition:

Cela me renvoi toujours l'adresse en entière quand il est sur le cloud .. :/
 
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 = TSpl(UBound(TSpl))
    Else
        Dossier = ThisWorkbook.Path
    End If
End Function
 
Bonjour,

Pour info le dossier c'est User, tous les autres sont des sous-dossiers.
Ah ben non, tous les autres ne sont pas des sous-dossiers !
Si un sous-dossier n'est pas un dossier, alors un sous-sous-dossier n'est pas un sous-dossier, etc.
😅


Sinon, je propose ça, basé sur #4 de Dranreb :
VB:
Sub test()
    MsgBox "Ce classeur est dans le dossier """ & Dossier & """"
End Sub

Function Dossier() As String
Dim TSpl() As String
    TSpl = Split(Replace(ThisWorkbook.Path, "\", "/"), "/")
    Dossier = TSpl(UBound(TSpl))
End Function
 
Dernière édition:
C'est vrai qu'un Replace raccourcit bien le code.
VB:
Function Dossier() As String
    Dim TSpl() As String
    
    'Fichier non encore enregistré
    If Len(ThisWorkbook.Path) = 0 Then
        Dossier = "N/A"
        
    'Fichier avec Path Windows ou Réseau
    Else
        TSpl = Split(Replace(ThisWorkbook.Path, "\", "/"), "/")
        Dossier = TSpl(UBound(TSpl))
    End If
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…