Introduction
Lorsque l’on sauve un fichier dans Windows, certains caractères sont proscrits du fait qu’ils sont réservés pour des usages particuliers.
- > Plus grand que (Redirection )
- < Plus petit que (Redirection inversée)
- | Barre verticale (Pipe)
- » Les guillemets
- : Deux points
- / Slash (Chemin)
- \ Antislash (Fractionnement)
- * Sert de joker (représente de 0 à x caractères quelques soient leurs valeurs)
- ? Sert de joker (représente 1 caractère quelque soit sa valeur)
Code de la procédure
Function ReplaceCharactersFileName(ByVal FileName As String, _
Optional Proscribed As String = "-,\/:|;_,*?<>;',""") As String
' Author : Philippe Tulliez (http://philippe.tulliez.be
' Date : 18/02/1998
' Version : 1.1
' Fonction renvoyant une chaîne de caractères
' en remplacant les caractères proscrits par un autre caractère
' Arguments
' FileName ' Nom du fichier à modifier
' [Proscribed] ' Liste des caractères à procrire et son caractère de remplacement
' Valeur par défaut -,\/:|;_,*?<>
' Organisation et syntaxe de l'argument Proscribed
' Cette chaîne peut avoir de 1 à plusieurs groupes
' Chaque groupe est séparé par un ;
' Groupe1;Groupe2;Groupe3
' - Syntaxe des Groupes
' CaractèreDeRemplacement,CaractèresARemplacer
' le premier caractère d'un groupe est le caractère de remplacement
' de ceux qui suivent la virgule
' Ex : -,\/:| [;_,*?<>] (Dans le 1er groupe les caractères \/:| sont remplacés par -
Dim myTable() As String, mySubst() As String, sc As Byte, t As Byte
FileName = Trim(FileName)
myTable = Split(Proscribed, ";")
For t = 0 To UBound(myTable)
mySubst = Split(myTable(t), ",")
For sc = 1 To Len(mySubst(1))
If InStr(FileName, Mid(mySubst(1), sc, 1)) Then
FileName = Replace(FileName, Mid(mySubst(1), sc, 1), mySubst(0))
End If
Next sc
Next t
ReplaceCharactersFileName = FileName
End Function
Exemple de son utilisation
Sub TestReplaceCharactersFileName() Dim FileName As String, NewFileName As String FileName = "2015/11/12-Offre:""Toto"">Vue Commande.xlsm" NewFileName = ReplaceCharactersFileName(FileName) ThisWorkbook.SaveAs FileName:=NewFileName End Sub
La chaîne de caractères envoyée par la variable nommée FileName à la fonction ReplaceCharactersFileName est égal à
2015/11/12-Offre:"Toto">Vue Commande.xlsm
La valeur renvoyée par la fonction est 2015-11-12-Offre-'Toto'_Vue Commande.xlsm
Commentaires récents