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