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 :

Ajouter liste repertoire et fichier dans une table [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Ajouter liste repertoire et fichier dans une table
    Bonjour à tous !!

    Je possède un répertoire qui contient plusieurs sous-répertoires qui eux-mêmes contiennent 8 images. Je souhaite enregistrer dans une table la liste complète des photos associées du nom de chaque répertoire. J'ai donc tenté une boucle à l'intérieur d'une boucle avec la commande vb DIR. Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    DoCmd.SetWarnings False
    Dim t As DAO.Recordset, repertoire As String, fichier As String, var As String
     
    'répertoire des fichiers à récupérer
    repertoire = "C:\...\dossier\"
     
    'vide la table tbFichiers
    DoCmd.RunSQL "DELETE chemin_images.* FROM IMAGES;"
     
    Set t = CurrentDb.OpenRecordset("IMAGES")
    fichier = Dir(repertoire, vbDirectory)
     
    'première boucle
    Do While fichier <> ""
          'condition pour les répertoires courants
          If fichier <> "." And fichier <> ".." Then
            'condition pour ne sélectionner que les répertoire
            If (GetAttr(repertoire & fichier) And vbDirectory) = vbDirectory Then
            'variable qui récupère le chemin de chaque sous-répertoire
            var = repertoire & (fichier) & "\"
                 fichier2 = Dir(var)
                 'deuxième boucle qui récupère le nom de chaque image et les  enregistre dans la table
                 Do While fichier2 <> ""
                    If fichier2 <> "." And fichier2 <> ".." Then
                         t.AddNew
                         t!chemin_images = fichier & "_" & fichier2
                         t.Update
                         fichier2 = Dir
                    End If
                Loop
              End If
            End If
        'debug
        fichier = Dir
    Loop
    t.Close
    Set t = Nothing
    DoCmd.SetWarnings True
    Il réussi a accéder à la deuxième boucle, enregistre bien les images du premier sous-répertoire dans la table mais bug lors du passage au deuxième sous-répertoire et me renvoie sur la ligne : Si vous avez une petite idée ou une autre technique, merci d'avance.

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    il n'est pas possible d'imbriquer des instructions dir

    il faut opérer en deux temps, en stockant par exemple d'abord les répertoires dans une collection puis parcourir cette collection et rechercher les fichiers contenus dans chaque répertoire

    sinon avec FileSystemObject ça doit être faisable (il doit y avoir des exemples sur le forum ou la FAQ)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    L'instruction Fichier=Dir renvoie à la dernière instruction Dir utilisée donc à celle qui parcourt les sous-répertoire. Il faut donc stocker dans une variable tableau les noms des sous-répertoires et utiliser cette variable tableau pour lister le contenu des sous-répertoire. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     DoCmd.SetWarnings False
        Dim t As DAO.Recordset, repertoire As String, fichier As String, var As String
     
        Dim ListeDossiers(20) As String
     
        'répertoire des fichiers à récupérer
        repertoire = "C:\DEVELOPPEZCOM\"
     
        'vide la table tbFichiers
        DoCmd.RunSQL "DELETE chemin_images.* FROM IMAGES;"
     
        Set t = CurrentDb.OpenRecordset("IMAGES")
        fichier = Dir(repertoire, vbDirectory)
     
        'première boucle
        i = 0
        Do While fichier <> ""
            'condition pour les répertoires courants
            If fichier <> "." And fichier <> ".." Then
                'condition pour ne sélectionner que les répertoire
                If (GetAttr(repertoire & fichier) And vbDirectory) = vbDirectory Then
                'variable qui récupère le chemin de chaque sous-répertoire
                    i = i + 1
                    ListeDossiers(i) = repertoire & (fichier) & "\"
                End If
            End If
            'debug
            fichier = Dir
        Loop
     
        For j = 1 To i
            fichier2 = Dir(ListeDossiers(j))
            'deuxième boucle qui récupère le nom de chaque image et les  enregistre dans la table
            Do While fichier2 <> ""
                If fichier2 <> "." And fichier2 <> ".." Then
                    t.AddNew
                    t!chemin_images = fichier & "_" & fichier2
                    t.Update
                    fichier2 = Dir
                End If
            Loop
        Next j
        t.Close
        Set t = Nothing
        DoCmd.SetWarnings True

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ok merci a vous le code fonctionne tres bien avec le tableau puis la boucle.

    Merci encore !

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

Discussions similaires

  1. Ajout de données d'un fichier dans une table
    Par skulled dans le forum WinDev
    Réponses: 1
    Dernier message: 02/08/2007, 21h25
  2. Charger un fichier dans une table
    Par luchot dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/02/2006, 17h21
  3. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  4. enregistrer le chelin d'un fichier dans une table
    Par piscine dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/09/2004, 15h13

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