[VBA] Fonction Dir et attributs.

Panurge Messages postés 38 Statut Membre -  
 Panurge -
Bonsoir.

La documentation de Word 2002 sur la fonctio Dir et son second argument ne me semble pas claire.

Le second argument est, disons, un champ de bits.

Voici ce que dit la documentation pour commencer :

" Dir, fonction

Renvoie une valeur de type String représentant le nom d'un fichier, d'un répertoire ou d'un dossier correspondant à une chaîne de recherche, à un attribut de fichier ou au nom de volume d'un lecteur.

Syntaxe

Dir[(pathname[, attributes])] "

Que faut-il entendre exactement par " correspondant à un attribut de fichiers " ?

Avant de donner un exemple de code et son résultat, je copie ce que la documentation indique sur la façon de désigner les attributs :

Constante Valeur Description
vbNormal 0 (Par défaut) Spécifie les fichiers sans attributs.
vbReadOnly 1 Spécifie les fichiers accessibles en lecture seule ainsi que les fichiers sans attributs.
vbHidden 2 Spécifie les fichiers cachés ainsi que les fichiers sans attributs.
vbSystem 4 Spécifie les fichiers système ainsi que les fichiers sans attributs. Non disponible sur le Macintosh.
vbVolume 8 Spécifie un nom de volume ; si un autre attribut est spécifié, la constante vbVolume est ignorée. Non disponible sur Macintosh.
vbDirectory 16 Spécifie les dossiers ainsi que les fichiers sans attributs.
vbAlias 64 Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh.

Voici maintenant un code que j'ai écrit pour tester cela :

If Dir("C:\FichierPourTesterAttributs.txt", vbNormal) <> "" Then
MsgBox "Le fichier existe déjà."
Else
MsgBox "Le fichier n'existe pas."
End If

Le fichier en question existe bien à l'endroit indiqué.
S'il a les attributs "Lecture seule" et "Archive" mais pas l'attribut "Fichier caché", le MsgBox dit qu'il existe.
S'il a les trois attributs "Lecture seule", "Fichier caché" et "Archive", le MsgBox dit qu'il n'existe pas.

Je ne vois pas quelle est la règle qui peut faire attendre ce résultat.

Quelqu'un peut-il me l'expliquer ? Merci d'avance.

2 réponses

  1. Lupin
     
    Bonjour,

    J'ai déjà rencontré ce problème et je me suis rabatu
    sur les objets de scripting (vbs) pour lire les attributs
    des fichiers.

    je ne saurais dire pourquoi malheureusement, toutefois
    voici un exemple du code que j'ai utilisé.

    Sub Test()
    
        Dim objFSO, objFichier
        
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFichier = objFSO.GetFile("C:\Fichier.txt")
        
        If (objFichier.Attributes And 1) Then
            MsgBox "Fichier en lecture seule"
        Else
            If (objFichier.Attributes And 2) Then
                MsgBox "Fichier caché"
            Else
                ' etc ...
            End If
        End If
    
    End Sub
    


    Lupin
    0
  2. Panurge Messages postés 38 Statut Membre 3
     
    Merci beaucoup pour cette réponse.

    On dirait vraiment qu'il y a un bug.

    Je vais essayer de me documenter sur le vbs, dont je ne sais rien.

    Il faudra que j'apprenne tout d'abord si on peut l'utiliser dans les macros de Word...

    Encore merci.
    0
    1. Lupin
       
      re:

      je dirais de façon général que VBS est un sous-ensemble
      de VBA qui lui-même est un sous-ensemble de VB.

      VBS est pratiquement compatible a 100% avec VBA,
      seule quelques instructions ainsi que le typage diffère.

      voici un lien pour msdn vbs
      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_UIDesignDev.asp

      et bien sur, visitez le site de JCB www.bellamyjc.org

      Lupin
      0
      1. Panurge > Lupin
         
        Merci beaucoup.

        Je vais essayer ça ce soir ou demain.

        Panurge.
        0