Salut à tous les forumeurs,

Vous m'écrirez sans doute qu'il existre des freewares qui fournissent la liste des unités, des dossiers d'une unité et des fichiers d'un dossier comme DirLister ou Directory List & Print pour n'en citer que 2. Mais le premier ne donne rien d'utile (uniquement le répertoire principal sans filtre !) tant qu'une $licence n'est pas achetée (et ce n'est pas très correct de demander de payer une licence pour un programme que la programmeuse d'origine distribuait vraiment gratuitement avant de décéder). Et le second n'offre pas non plus de filtres et sa sortie est limitée à l'imprimante ou au presse-papier avec une fenêtre dont le contenu est inaccessible. De la m... AMHA. Et je n'ai encore rien trouvé d'autre comme freeware gratuit partageable qui corresponde à mes demandes.

Dès lors, pour un usage d'abord personnel et particulier et pour rester en bonne forme en programmation, j'ai voulu développer une petite base msAccess 2010 (sous Win10 Pro 64 bits) pour offrir une solution fonctionnelle, que je compte d'ailleurs mettre à la disposition des sites sympathiques dont les utilisateurs m'ont apporté par leurs pages des informations très utiles. Qu'ils en soient remerciés.

J'utilise FileSystemObject, l'usage de Dir ne donnant pas les mêmes possibilités. En parcourant la liste des dossiers d'une unité, disons D:, j'ai eu des soucis avec D:\$RECYCLE.BIN et D:\System Volume Information : facilement ignorables avec un test sur ces 2 noms. Mais je passe aussi sur des dossiers cachés comme D:\Internet\Profiles\.BackupManager, dossiers qui sont considérés comme inexistants avec le code suivant If Dir(strDosDépart, vbDirectory) = "" Then (avec strDosDépart contenant le nom complet).

Je me suis mis à la recherche d'une méthode permettant de filtrer les dossiers de ce genre là, mais sans devoir coder en dur leurs noms, car tous les dossiers cachés ne sont pas prévisibles. J'ai trouvé ces codes des dossiers à problèmes (pour moi !) : les 2 premiers cités avec 22, le suivant avec 18 et D:\Mes sources de données avec 20 tandis que les dossiers apparemment standards pouvaient avoir des codes de 16 (le plus fréquent) ou 17, voire 48 (?). Sur cette base je filtre les dossiers à retenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    Set oFldSource = oFSO.GetFolder(strDosDépart)
    For Each oFld In oFldSource.SubFolders          ' Parcourt les Répertoires
        bAttr = oFld.Attributes
        If bAttr <> 18 And bAttr <> 20 And bAttr <> 22 Then
Dans la perspective d'avoir d'autres dossiers avec des valeurs inattendues, je me demande comment décoder ces valeurs et ce qu'elles signifient (et cela n'a rien à voir avec la liste ... objFolder.GetDetailsOf(strFilename, I). J'ai bien cherché sur l'Internet en Français et Anglais mais en vain. Donc bienvenue à vos réponses...