Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VÉRIFIER LA CONFORMITÉ DU NOM D'UN FICHIER


Information sur la source

Catégorie :Fichier / Disque Classé sous : nom, fichier, conformité, caractère, interdit Niveau : Débutant Date de création : 05/10/2003 Date de mise à jour : 05/10/2003 02:40:05 Vu / téléchargé: 6 496 / 157

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


Description

Lorsque vous voulez enregistrer un fichier et que le nom est issu d'une variable, par exemple comportant le nom d'une machine, il parait utile de vérifier que tous les caractères qui compose le nom soient autorisés par Windows, sinon, vous risquez d'avoir une erreur que peut-être vous n'avez pas géré.

Pour vérifie le nom d'un fichier, simplement :
Nom = ValideNomFichier(Nom)

Les caractères non autorisés seront remplacés par des traits d'union (par défaut) ou par tout autre caractère si vous utilisez la syntaxe :
Nom = ValideNomFichier(Nom, "@")

Pour l'utiliser, collez ce code dans un module, ou récupérez le module dans le Zip.
C'est tout
 

Source

  • Public Function ValideNomFichier(ByVal sNomFichier As String, _
  • Optional sRemplaceCaractèrePar As String = "-") As String
  • ' Cette fonction renvoie un nom de fichier autorisé
  • ' On remplace les mauvais caractères par sRemplaceCaractèrePar
  • ' (valeur par défaut = signe moins '-')
  • ' Les caractères autorisés sont :
  • ' A-Z Lettre + Signe plus
  • ' 0-9 Nombre , Virgule
  • ' space Espace ; Point-virgule
  • ' ' Apostrophe = Signe égal
  • ' - Tiret @ Arobase
  • ' ! Point d'exclamation [ ] Crochets
  • ' # Dièse _ Tiret de soulignement
  • ' $ Dollar { } Accolades
  • ' % Pour cent ~ Tilde
  • ' & Et commercial ` Accent
  • ' ( ) Parenthèses . Point
  • ' plus toutes les combinaisons valables des lettres avec accents
  • ' !! Cette fonction ne fonctionne pas avec des chemins complets
  • ' puisque le caractère back-slash '\' n'est pas autorisé
  • Dim Temp As String, Car As String, r As Long
  • ' Avant de commencer, on va vérifier que le caractère de remplacement est
  • ' lui-même autorisé (ce serait trop bête)
  • sRemplaceCaractèrePar = Left(sRemplaceCaractèrePar, 1) ' un seul caractère
  • If Not (sRemplaceCaractèrePar Like "[A-Z]" Or _
  • sRemplaceCaractèrePar Like "[a-z]" Or _
  • sRemplaceCaractèrePar Like "[0-9]" Or _
  • sRemplaceCaractèrePar Like "[ '!#$%&()+,;=@{}~`.]" Or _
  • sRemplaceCaractèrePar Like "[-]" Or _
  • sRemplaceCaractèrePar Like "[[]" Or _
  • sRemplaceCaractèrePar Like "[]]" Or _
  • sRemplaceCaractèrePar Like "[_]" Or _
  • sRemplaceCaractèrePar Like "[àéèêïîôùû]") Then _
  • sRemplaceCaractèrePar = "-" ' Si non autorisé, impose trait d'union
  • Temp = sNomFichier
  • ' Vérifie que chaque caractère est autorisé
  • For r = 1 To Len(Temp)
  • Car = Mid(Temp, r, 1)
  • If Not (Car Like "[A-Z]" Or _
  • Car Like "[a-z]" Or _
  • Car Like "[0-9]" Or _
  • Car Like "[ '!#$%&()+,;=@{}~`.]" Or _
  • Car Like "[-]" Or _
  • Car Like "[[]" Or _
  • Car Like "[]]" Or _
  • Car Like "[_]" Or _
  • Car Like "[àéèêïîôùû]") Then _
  • Mid(Temp, r, 1) = sRemplaceCaractèrePar
  • Next r
  • ' S'il y a eu plusieurs remplacements à la suite, on va se retrouver avec
  • ' plusieurs signes '-' à la queue leuleu : pas joli : On n'en laisse qu'un.
  • Do While InStr(1, Temp, sRemplaceCaractèrePar & sRemplaceCaractèrePar) <> 0
  • Temp = Replace(Temp, sRemplaceCaractèrePar & sRemplaceCaractèrePar, sRemplaceCaractèrePar)
  • DoEvents
  • Loop
  • ' Renvoie le nom modifié
  • ValideNomFichier = Temp
  • End Function
Public Function ValideNomFichier(ByVal sNomFichier As String, _
                                 Optional sRemplaceCaractèrePar As String = "-") As String

    ' Cette fonction renvoie un nom de fichier autorisé
    ' On remplace les mauvais caractères par sRemplaceCaractèrePar
    '   (valeur par défaut = signe moins '-')
    ' Les caractères autorisés sont :
    '   A-Z   Lettre               +   Signe plus
    '   0-9   Nombre               ,   Virgule
    '   space   Espace             ;   Point-virgule
    '   '   Apostrophe             =   Signe égal
    '   -   Tiret                  @   Arobase
    '   !   Point d'exclamation   [ ]  Crochets
    '   #   Dièse                  _   Tiret de soulignement
    '   $   Dollar                { }  Accolades
    '   %   Pour cent              ~   Tilde
    '   &   Et commercial          `   Accent
    '  ( )  Parenthèses            .   Point
    ' plus toutes les combinaisons valables des lettres avec accents
    
    ' !! Cette fonction ne fonctionne pas avec des chemins complets
    '    puisque le caractère back-slash '\' n'est pas autorisé
    
    Dim Temp As String, Car As String, r As Long
    
    ' Avant de commencer, on va vérifier que le caractère de remplacement est
    ' lui-même autorisé (ce serait trop bête)
    sRemplaceCaractèrePar = Left(sRemplaceCaractèrePar, 1) ' un seul caractère
    If Not (sRemplaceCaractèrePar Like "[A-Z]" Or _
            sRemplaceCaractèrePar Like "[a-z]" Or _
            sRemplaceCaractèrePar Like "[0-9]" Or _
            sRemplaceCaractèrePar Like "[ '!#$%&()+,;=@{}~`.]" Or _
            sRemplaceCaractèrePar Like "[-]" Or _
            sRemplaceCaractèrePar Like "[[]" Or _
            sRemplaceCaractèrePar Like "[]]" Or _
            sRemplaceCaractèrePar Like "[_]" Or _
            sRemplaceCaractèrePar Like "[àéèêïîôùû]") Then _
                sRemplaceCaractèrePar = "-"  ' Si non autorisé, impose trait d'union
    
    Temp = sNomFichier
    ' Vérifie que chaque caractère est autorisé
    For r = 1 To Len(Temp)
        Car = Mid(Temp, r, 1)
        If Not (Car Like "[A-Z]" Or _
                Car Like "[a-z]" Or _
                Car Like "[0-9]" Or _
                Car Like "[ '!#$%&()+,;=@{}~`.]" Or _
                Car Like "[-]" Or _
                Car Like "[[]" Or _
                Car Like "[]]" Or _
                Car Like "[_]" Or _
                Car Like "[àéèêïîôùû]") Then _
                    Mid(Temp, r, 1) = sRemplaceCaractèrePar
    Next r
    
    ' S'il y a eu plusieurs remplacements à la suite, on va se retrouver avec
    ' plusieurs signes '-' à la queue leuleu : pas joli : On n'en laisse qu'un.
    Do While InStr(1, Temp, sRemplaceCaractèrePar & sRemplaceCaractèrePar) <> 0
        Temp = Replace(Temp, sRemplaceCaractèrePar & sRemplaceCaractèrePar, sRemplaceCaractèrePar)
        DoEvents
    Loop
    
    ' Renvoie le nom modifié
    ValideNomFichier = Temp

End Function

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de yan35 le 23/12/2006 12:45:42

Eh Oui, pratique !
Merci de l'avoir écrite cette fonction.
10/10

signaler à un administrateur
Commentaire de yan35 le 23/12/2006 15:27:07

Je viens de servir de ta fonction et je la complète avec des caractères autorisés complémentaires, comme suit :
>> sRemplaceCaractèrePar Like "[ '!#$%&()+,;=@{}~`.°]" Or _  ' ajout du °
>> sRemplaceCaractèrePar Like "[àéèêïîôùû]" Or _
   sRemplaceCaractèrePar Like UCase("[àéèêïîôùû]")) Then _   ' ajout de ces caractères en majuscules

>> Car Like "[ '!#$%&()+,;=@{}~`.°]" Or _
>> Car Like "[àéèêïîôùû]" Or _
   Car Like UCase("[àéèêïîôùû]")) Then _

Cordialement.

signaler à un administrateur
Commentaire de jack le 23/12/2006 15:41:04 administrateur CS

Merci Yan pour cette amélioration.
Je mettrais à jou après les fêtes.

signaler à un administrateur
Commentaire de jack le 21/07/2007 18:54:25 administrateur CS

Dans la même série : http://www.vbfrance.com/codes/VERIFIER-CONFORMITE-ADRESSE-EMAIL_43534.aspx

signaler à un administrateur
Commentaire de JonasVB le 13/12/2008 11:24:38

pourquoi ne pas se contenter de tester les caractères interdits ?

\ / : * ? " < > |

d'autant que (même si avant dotNet, VB ne les gérait pas) Windows autorise aussi les caractères unicode (japonais et autres...)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Ouvertures de fichiers [ par Rodolf ] Comment on fait pour savoir les caractères manquant dans un fichier à un débit assez élevé.C' est pour faire un programme de compression mais quand je Choisir la police d'un fichier txt ! [ par -=The nul =- ] Comment fait-on pour que lorsque j'enregistre un fichier txt, le text est la police de caractère "Courier New".Ou la police de caractère de ma textbox recherche de texte dans un fichier [ par JoeBiloute ] Amis développeurs,Je cherche une fonction vb qui me permettre d'obtenir que le texte, à partir d'une chaine de caractère issue d'un fichier. Je voudra Recherche de texte dans un fichier texte [ par yoda ] Amis développeurs,Je cherche une fonction vb qui me permettre d'obtenir que le texte, à partir d'une chaine de caractère issue d'un fichier. Je voudra Question sur les fichiers ... [ par Surfurax ] Bonjour à tous, je voudrais savoir s'il est possible d'ouvrir un fichier, de le lire tout en insérant de nouveaux caractères à certains endroits sans Recherche de caractères [ par jlouis37 ] Bonjour,J'ai un fichier doc MS-DOS, que j'ouvre sous Word 2000 ou XP.Word convertit normalement tout seul les caractères DOS en caractères Windows.Le Problème Commande PUT ajout 00 [ par Spylover ] Bonjour,J'ouvre un fichier en mode binaire et apres je veux écrire caractère par caractère dedans avec la commande put .Le problème est qu'après chaqu Prob avec la commande put qui me rajoute 00 [ par Spylover ] Bonjour,J'ouvre un fichier en mode binaire et apres je veux écrire caractère par caractère dedans avec la commande put .Le problème est qu'après chaqu Caractère Zarb !!! [ par Docck ] SalutJ'ai un problème quand je lit un fichier texte :Je lit mon fichier texte ligne par ligne et tous les caractères du genre 'é' dans la ligne sont a Rechercher une chaine de caractère dans un fichier texte... [ par Luuna ] Je cherche à convertir un fichier texte en table Access par l'intermédiaire de VB6...Voici le code dont je me sert tiré d'un livre :------------------


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.