IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Problem avec la méthode GetFodler(path).subfolders [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 90
    Par défaut Problem avec la méthode GetFodler(path).subfolders
    Bonjour,

    Dans le cadre d'une migration d'access 2003 vers 2010 et de XP vers Windows 7. J'ai une erreur qui apparait (ou du moins une différence de comportement avec l'utilisation de GetFolder().

    L'idée est par exemple de vérifier si si un dossier est vide. Si il y a une erreur on affiche le message.

    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
     
    If PCheckFolders Then
        If FSO.GetFolder(PFolderPath).subfolders.count > 0 Then
            lb1 = False
        Else
            lb1 = True
        End If
    End If
    Dans l'ancienne version ça marchait sans message d'erreur.
    Lorsque j'exécute sur access 2010 le getFolder(path) renvoi bien le bon dossier mais la partie subFolders (et Files également) n'est pas renseigné. (Si je mets un espion sur l'objet folder j'ai "Erreur définie par l'application ou par l'objet" au niveau des subfolders).

    Et je me retrouve avec le message d'erreur "Permission Refusée"

    Le comportement de mon objet folder ne semble pas dépendre du fait qu'il contient oui ou non des dossiers ou fichiers.

    Précision:

    Le programme en question liste les sous dossiers présent dans "D:\Utilisateurs\User\Documents" et bloque notamment aves les dossiers MesImages MesVideos et MaMusique. Des dossiers qui n'apparaissent pas lorsque que je vais voir dans l'explorateur... serait-il cachés ou un truc du genre?

    Quelqu'un aurait-il une idée de la source de mon poblème?

    Cordialement,
    Christophe.

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Les chemins ont changés pour "Mes Documents", "Mes Images", "Mes Vidéos".
    Mais Windows 7 affiche des chemins virtuels qui sont trompeurs.
    Pour voir le chemin d'un dossier ou d'un fichier, clic-droit dessus, puis propriétés.
    La propriété emplacement montre le chemin réel.

    Mes Documents %USERPROFILE%\Documents
    Ma Musique %USERPROFILE%\Music
    Mes Images %USERPROFILE%\Pictures
    Mes Vidéos %USERPROFILE%\Videos

    USERPROFILE est la variable d'environnement initialisé par le système, contenant le chemin du profil utilisateur.
    Ex avec W7: C:\Users\Toto

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 90
    Par défaut
    Bonjour et Merci @LedZepII pour ta réponse!

    Mais ça ne résout pas encore mon problème.

    Dans mon code VBA j'utilise la fonction CurDir qui me renvoi "D:/Users/Toto/Documents"

    Lorsque que je vais voir de mes yeux, en utilisant l'explorateur, ce qu'il y a dans ce répertoire je trouve un dosser "Modèle" (+ un ficher caché Default.rdp).

    Mais lorsque par le code je veux accèder aux sous-dossiers de "D:/Users/Toto/Documents" (--> FSO.GetFolder(myPath).subfolders)

    Le code me retourne, en plus du dosser "Modèle", les répertoires MesImages MaMusic et MesVidéos. Et ce sont ces trois répertoires qui me chagrine un peu.

    Je ne comprend pas pourquoi ils apparaisent dans les résultats de mon GetFolder().subfolders

    J'ai essayé de vérifié si il n'y avait pas de raccourcis ou dossiers cachés mais il ne me semble pas.

    Qu'en pensez vous/tu?

    Cordialement,
    Christophe.

  4. #4
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour Christophe,

    Je n'avais jamais vu ces dossiers "Ma Musique", "Mes Images", "Mes Videos" dans C:\Users\Toto\Documents
    Honnêtement, je ne sais pas à quoi ils servent à cet endroit.
    Peut-être à garantir une certaine compatibilité avec des applications écrites pour XP ?
    J'ai trouvé un bout d'explication ici: http://support.microsoft.com/kb/930128

    GetFolder().Subfolders prend en compte ces dossiers (points de jonctions) parce qu'ils ont l'attribut fichier "Dossier".
    Ils ont aussi l'attribut "Système", indiquant que ce sont des dossiers système.

    Si ton besoin est de compter les sous-dossiers de feu "Mes Documents", j'ai peur qu'il faille faire un comptage manuel en énumérant les sous-dossiers avec un For Each, et ne pas compter ceux qui ont l'attribut "Système".

    A+
    Christophe

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 90
    Par défaut
    Re,
    Merci pour ta réponse qui pointait exactement mon problème.
    Outre ta documentation je mets d'autres liens que j'ai trouvé sur le sujet.

    http://www.developpez.net/forums/d42...irtuels-vista/

    http://msdn.microsoft.com/en-us/libr...(v=vs.90).aspx

    http://www.xtremevbtalk.com/showthread.php?t=321849

    Du coup avant d'appeler ma fonction qui générait le message d'erreur sur les dossiers "point de jonction" je vérifie l'attribut des dossiers et ne les traite pas si il s'agit d'un point de jonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each f In FSO.GetFolder(lRootFolderPath).subfolders
        If (f.Attributes And 1024) <> 1024 Then
    etc...
    Merci pour tes indications! Et si jamais tu as des conseils sur l'utilisation en parallèle d'access 2010 et le runtime access 2003 j'ai mis un post dans le forum runtime!

    Merci et bonne journée!

    Cordialement,
    Christophe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec la méthode contains
    Par nabilfaouzi dans le forum VB.NET
    Réponses: 6
    Dernier message: 10/03/2008, 03h08
  2. Probleme avec la méthode OpenReport
    Par 4rn0_o dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/08/2007, 15h23
  3. probleme avec la méthode insert de std::set
    Par elekis dans le forum SL & STL
    Réponses: 4
    Dernier message: 18/04/2007, 18h01
  4. probleme avec la méthode "delete", (ADO)
    Par nguhv dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/04/2007, 13h56
  5. [Wscript] probleme avec la méthode send
    Par machinTruc dans le forum Windows
    Réponses: 8
    Dernier message: 18/05/2005, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo