Magic_Doctor
XLDnaute Barbatruc
Renvoie, à partir du chemin d'un fichier, le nom du fichier.
Deux méthodes différentes pour résoudre ce problème :
Deux méthodes différentes pour résoudre ce problème :
VB:
Function ExtraireFinChemin$(chemin$, Optional chx As Boolean = True)
'*******************************************************************************************************************************
'Renvoie, à partir du chemin d'un fichier quel qu'il soit, le nom du fichier avec ou sans son extension
'Magic_Doctor
'- chemin : adresse du fichier (ex : "C:\Users\Belphégor\Lectures nocturnes\La revanche secrète de la chèvre de M. Seguin.pdf")
'- chx : si True (ou omis) --> La revanche secrète de la chèvre de M. Seguin.pdf
' si False --> La revanche secrète de la chèvre de M. Seguin
'*******************************************************************************************************************************
Dim regEx As Object, wf As WorksheetFunction, NbOccurrence As Byte
Set regEx = CreateObject("VBScript.RegExp")
Set wf = Application.WorksheetFunction
NbOccurrence = (Len(chemin) - Len(Replace(chemin, "\", "", , , 1))) / Len("\") 'nombre de fois qu'apparaît "\" dans la chaîne "chemin"
ExtraireFinChemin = "Not matched"
With regEx
.Pattern = wf.Rept("(.*)\\", NbOccurrence - IIf(chx, 0, 1)) & "((.*)\.(.*))"
.Global = True
.MultiLine = True
.IgnoreCase = False
End With
If regEx.test(chemin) Then
ExtraireFinChemin = regEx.Replace(chemin, "$" & NbOccurrence + 1)
If NbOccurrence = 1 Then 'le fichier se trouve dans la racine (ex : "C:\La revanche secrète de la chèvre de M. Seguin.pdf")
regEx.Pattern = "(.*)\\(.*)"
ExtraireFinChemin = regEx.Replace(ExtraireFinChemin, "$2")
End If
End If
End Function
VB:
Function File_Name$(NomFichier$)
'*******************************************************************************************************************************************
'Renvoie, à partir du chemin d'un fichier qui doit se trouver obligatoirement quelque part dans le PC, le nom du fichier avec son extension
'patricktoulon
'- NomFichier : adresse du fichier (ex : "C:\Users\Belphégor\Lectures nocturnes\La revanche secrète de la chèvre de M. Seguin.pdf")
'*******************************************************************************************************************************************
File_Name = "Not Found!"
On Error Resume Next
With CreateObject("Scripting.FileSystemObject").GetFile(NomFichier): File_Name = .Name: End With
End Function
VB:
Function File_Name2$(NomFichier$, Optional chx As Boolean = True)
'***************************************************************************************************************************************************
'Renvoie, à partir du chemin d'un fichier qui doit se trouver obligatoirement quelque part dans le PC, le nom du fichier avec ou sans son extension
'patricktoulon (modifié)
'- NomFichier : adresse du fichier (ex : "C:\Users\Belphégor\Lectures nocturnes\La revanche secrète de la chèvre de M. Seguin.pdf")
'- chx : si True (ou omis) --> La revanche secrète de la chèvre de M. Seguin.pdf
' si False --> La revanche secrète de la chèvre de M. Seguin
'***************************************************************************************************************************************************
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
File_Name2 = "Not Found!"
On Error Resume Next
With CreateObject("Scripting.FileSystemObject").GetFile(NomFichier)
File_Name2 = .Name
If chx = False Then
With regEx
.Pattern = "(.*)\.(.*)"
.Global = True
.MultiLine = True
.IgnoreCase = False
End With
File_Name2 = regEx.Replace(File_Name2, "$1")
End If
End With
End Function