Vote utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives
 

macro



Lorsque vous manipulez des répertoires ou des fichiers, il y a des commandes qui reviennent souvent :

  • extraire le nom de fichier à partir d'un chemin complet
  • extraire l'extension d'un fichier à partir de son chemin complet (.doc, .png, .jpg, etc...)
  • extraire le nom du fichier, sans son extension, à partir de son chemin complet
  • extraire le chemin sans le nom du fichier

Et pourquoi ne pas créer des fonctions et ne plus s'embêter avec ça ?

 

 

Le code

Recopiez le code ci-dessous dans un module standard, que vous nommerez pas exemple "modFichiers"

 

 

' ---
 ' EXTRACTION D'UN NOM DE FICHIER SANS SON EXTENSION
 ' ---
 ' Entrée : strPath : Chemin d'un fichier
 ' Ex. : test.jpg
 ' C:\un\chemin\quelconque\test.jpg
 ' Sortie : Nom du fichier sans son extension (ex. : test).
 '
Function FilenameWithoutExt( _

ByVal strPath As String)
 
Dim intI As Integer
 
' Extraire uniquement le nom de fichier
' (au cas où on aurait transmis un chemin complet)
strPath = Filename(strPath)

 
intI = InStrRev(strPath, ".", -1, vbTextCompare)
If intI = 0 Then
FilenameWithoutExt = strPath
Else
FilenameWithoutExt = Left(strPath, intI - 1)
End If
End Function
 
' ---
' EXTRACTION D'UN NOM DE FICHIER AVEC SON EXTENSION
' ---
' Entrée : strPath : Chemin d'un fichier
' Ex. : test.jpg
' C:\un\chemin\quelconque\test.jpg
' Sortie : Nom du fichier avec son extension (ex. : test.jpg).
'
Function Filename(ByVal strPath As String) As String

' Trouver le dernier backslash, s'il y en a un...
Dim intI As Integer

intI = InStrRev(strPath, "\", -1, vbTextCompare)
 
' Renvoyer la partie après le backslash
Filename = IIf(intI = 0, strPath, Mid(strPath, intI + 1))

End Function
 
' ---
' EXTRACTION DE L'EXTENSION D'UN FICHIER
' ---
' Entrée : strPath : Chemin d'un fichier
' Ex. : test.jpg
' C:\un\chemin\quelconque\test.jpg
' Sortie : Extension du fichier (ex. : jpg).
'
Function FileExt(ByVal strPath As String) As String

' Ne conserver que le nom de fichier
strPath = Filename(strPath)

 
' Trouver le dernier point
Dim intI As Integer

intI = InStrRev(strPath, ".", -1, vbTextCompare)
FileExt = IIf(intI = 0, "", Mid(strPath, intI + 1))
End Function
 
' ---
' EXTRACTION D'UN CHEMIN
' ---
' Entrée : strPath : Chemin d'un fichier
' Ex. : test.jpg
' C:\un\chemin\quelconque\test.jpg
' Sortie : Chemin du fichier (ex. : C:\un\chemin\quelconque\).
'
Function FilePath(ByVal strPath As String) As String

' Trouver le dernier \
Dim intI As Integer

intI = InStrRev(strPath, "\", -1, vbTextCompare)
 
' Valeur de retour
FilePath = IIf(intI = 0, strPath, Left(strPath, intI))

End Function

 

 

 

 

Utililisation

Le code ci-dessus créé 4 fonctions VBA :

  1. la fonction Filename ()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Greg\Images\learnup.jpg), et fournit le nom du fichier (avec son extension) en sortie, soit : learnup.jpg.
  2. La fonction FilenameWithoutExt ()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Greg\Images\learnup.jpg), et fournit le nom du fichier (cette fois sans son extension) en sortie, soit : learnup.
  3. la fonction FileExt ()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Greg\Images\learnup.jpg), et fournit uniquement l'extension en sortie, soit : jpg.

  4. la fonction FilePath ()
    Cette fonction reçoit un chemin complet en entrée (ex. : C:\Users\Greg\Images\learnup.jpg), et fournit uniquement le chemin (sans le nom du fichier) en sortie, soit : C:\Users\Greg\Images\.

 

 

greg

 

 

1000 caractères restants