[VBA] Fonction Dir et attributs. [Fermé]

Signaler
Messages postés
37
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
25 mars 2009
-
 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

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
Messages postés
37
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
25 mars 2009
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.
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
> Lupin
re:

le précédent lien ne pointe pas à la bonne place :

http://www.microsoft.com/technet/scriptcenter/default.mspx

Lupin
> Lupin
Merci beaucoup.

Je vais essayer ça ce soir ou demain.

Panurge.