Rechercher : dans
Par :

[VBA] Fonction Dir et attributs.

Dernière réponse le 14 fév 2006 à 17:17:55 Panurge, le 13 fév 2006 à 17:34:09 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [VBA] Fonction Dir et attributs. » dans :
[VBA] Fonction NB.SI_Plus Voir Fonction NB.SI_Plus sans limitation Cette fonction "Plus" permet d'appliquer la fonction NB.SI sans que l'on soit limité au nombre de paramètres imposés par Excel. Introduction Le classeur Dans un module général Télécharger le...
[VBA] Fonction qui retourne la couleur active d'une MFC VoirCette fonction retourne la valeur du format actif d'une mise en forme conditionnelle. Avec la fonction de la démo, deux valeurs peuvent êtres retournées. Mode = 0 : retourne la valeur de Interior.ColorIndex Mode = 1 : retourne la valeur de...
VB6/VBA Transformer nombre en texte VoirIntroduction Préliminaires VB6 Dans le module de la forme Dans Module1 Introduction La fonction peut transformer des nombres de l'unité jusqu'à 999 tera. Prend en compte la syntaxe pour le français de France, de Belgique et de...
[VBA] RechercheV Polyvalente VoirRECHERCHE POLYVALENTE Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes. La RechercheV d'origine a beaucoup de limites: La colonne de la donnée doit être avec un offset...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

Lupin, le 13 fév 2006 à 22:14:08

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

Répondre à Lupin

2

Panurge, le 13 fév 2006 à 23:21:22

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.

Répondre à Panurge

3

Lupin, le 14 fév 2006 à 16:02:32

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/e­n-us/dnanchor/html/anch_UIDesignDev.asp

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

Lupin

Répondre à Lupin

4

Lupin, le 14 fév 2006 à 16:05:54

Re:

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

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

Lupin

Répondre à Lupin

5

 Panurge, le 14 fév 2006 à 17:17:55

Merci beaucoup.

Je vais essayer ça ce soir ou demain.

Panurge.

Répondre à Panurge