Extraire mots à partir d'un séparateur

  • Initiateur de la discussion Initiateur de la discussion KIM
  • Date de début Date de début

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 !

KIM

XLDnaute Accro
Bonjour les ami(e)s & le forum,
J'utilise une macro que j'ai récupérée du forum (merci) qui me donne, à partir d'un répertoire racine, l'arborescence complète des fichiers et leurs chemins complets.
Le chemin des fichiers est très long, je souhaite récupérer les noms de certains répertoires. Est-il possible de créer une focntion (si quelqu'un(e) l'a déjà fait, mille mercis) avec 2 paramètres le séparateur et le numéro du séparateur dans le chemin pour récupérer le nom du dossier qui se trouve après ce séparateur et avant le prochain séparateur. Voir fichier joinr.
Le chemin complet en colonne C : Ex D:\TEST\DP01\ADP080\ADP080-01-A-SURF.xls
En colonnes J, K, L et M les résultats de la fonction demandée
fct("/",1) = TEST
fct("/",2) = DP01
fct("/",3) = APD080
fct("/",f) = ADP080-01-A-SURF.xls 'nom du fichier
avec n° séparateur = f pour dire que c'est le nom du fichier qui se trouve après le dernier séparateur "/".

Le nombre du séparateur dans le chemin est aléatoire, cela dépend de l'arborescence de la racine.
Merci de votre aide
KIM
 

Pièces jointes

Re : Extraire mots à partir d'un séparateur

Bonjour KIM, le forum,


Voici un essai avec cette fonction VBA :
VB:
Public Function fct(cellule As Range, separateur As String, numElement As Long) As String
    On Error Resume Next
    fct = Split(cellule(1, 1).Text, separateur)(numElement)
End Function
Ensuite, saisir cette formule en J6 et la tirer vers la droite et vers le bas :
Code:
=fct($C6;"\";COLONNES($J$5:J$5))
A+
 
Re : Extraire mots à partir d'un séparateur

Regarde la pièce jointe arborescence_v2.zipBonjour Pierrejean, mromain, & le fil
Je vous remercie de votre réponse, elle correspond bien à ma question. Mais après réflexion elle ne répond pas à mon attente et vous prie de m'en excuser.
En exécutant votre macro sur un exemple réél dont l'arborescence des fichiers est longue j'ai remarqué que j'ai besoin de remonter l'arborescence dans le sens inverse. càd à partir d'un chemin complet d'un fichier, je dois extraire son répertoire, le répertoire père et remonter l'arborescence si besoin.
ainsi pour : Ex D:\TEST\DP01\ADP080\ADP080-01-A-SURF.xls

fct("/",1) = ADP080-01-A-SURF.xls 'nom du fichier
fct("/",2) = APD080
fct("/",3) = DP01
fct("/",4) = TEST
fct("/",0) = D:\TEST\DP01\ADP080\ADP080-01-A-SURF.xls 'chemin complet
Par avance, merci de votre aide
KIM
 

Pièces jointes

Re : Extraire mots à partir d'un séparateur

Rebonjour KIM,
Salut Wilfried42, salut pierrejean 🙂

Sinon, la fonction VBA modifiée :
VB:
Public Function fct(cellule As Range, separateur As String, numElement As Long) As String
Dim tabD() As String
    On Error Resume Next
    tabD = Split(cellule(1, 1).Text, separateur)
    fct = tabD(UBound(tabD) - numElement + 1)
End Function
Et toujours la même formule en J6 et la tirer vers la droite et vers le bas :
Code:
=fct($C6;"\";COLONNES($J$5:J$5))
A+
 
Re : Extraire mots à partir d'un séparateur

Bonsoir Wilfried42, pierrejean & le fil,
merci pour votre aide. Cela fonctionne avec des macros différentes.
@Pierrejean
La seule différence c'est que quand nb=1, la fonctionne intègre le séparateur dans le résulatat et je n'ai pas compris pourquoi.
Pour fct1("/",1) j'obtiens \ADP080-01-A-SURF.xls et non ADP080-01-A-SURF.xls Pourquoi?
As-tu une idée?

merci à vous tous et bonne soirée
KIM
 
Re : Extraire mots à partir d'un séparateur

Bonsoir à tous,
pierrejean, j'essaie de faire fonctionner ton fichier chez moi mais sans succès.
J'appuie d'abord sur "Répertoire choix racine", je choisis un dossier, puis clique sur "Listes fichiers à partir de la racine", mais rien n'apparait dans le tableau.
Y-a-t-il des paramètres à adapter au niveau des macros, une bibliothèque à activer,... ? Je te précise au cas où que je suis comme toi sur XL 2007.
A+
 
Re : Extraire mots à partir d'un séparateur

Bonsoir le fil 🙂,
Une fonction relative ne ferait-elle pas ton bonheur 😛 ?
Code:
Function MaFonction(Chemin As String, Position As Integer) As String
Dim Tableau
Tableau = Split(Chemin, "\")
If Position > UBound(Tableau) - LBound(Tableau) Then MaFonction = "" Else MaFonction = Tableau(UBound(Tableau) - Position)
End Function
D:\TEST\DP01\ADP080\ADP080-01-A-SURF.xls
=MaFonction(A1;0) -> ADP080-01-A-SURF.xls
=MaFonction(A1;1) -> ADP080
=MaFonction(A1;2) -> DP01
Etc. 😉
Bonne soirée 😎
 
Re : Extraire mots à partir d'un séparateur

Bonjour le fil,
@david84,
Effectivement la macro ne liste que les fichiers qui se terminent par SURF.xls, je l'ai adaptée à mon besoin.
Sinon, dans la macro lit_dossier(ByRef Dossier, ByVal niveau)
Remplacer la ligne If Right(f.Name, 8) = "SURF.xls" And f.Name <> ThisWorkbook.Name Then
Par If f.Name <> ThisWorkbook.Name Then
ou pour lister seulement les fichiers de type excel : If Right(Fichier.Name, 3) = "xls" And Fichier.Name <> ThisWorkbook.Name Then


Bonne journée
KIM
 
- 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

Retour