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

Access Discussion :

Problème fonction dir pour importer des noms de fichiers.xls


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Points : 31
    Points
    31
    Par défaut Problème fonction dir pour importer des noms de fichiers.xls
    Bonjour,

    J'ai un gros problème, le voici

    J'ai un répertoire avec comme chemin d'accès :J:\Accès Données\en cours

    Dans ce répertoire j'ai de nouveau d'autres répertoires nommés :

    - Juillet
    - Août
    - Septembre

    Dans ces sous répertoires j'ai des fichiers avec une extension .xls

    Voila ce que j'aimerai pouvoir faire :

    Sous access créer une table avec le nom de chacun des fichiers .xls

    En fait vu qu'il y en a bcp j'aimerai pouvoir le faire d'une maniere automatique plutot que de les retaper a la main dans une table Access.

    Voici une ébauche de code, mais il ne marche pas. Il donne seulement le nom des sous répertoires mais pas des fichier .xls dedans:


    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
    Private Sub Commande6_Click()
     
    fichier = Dir("J:\Accès Données\en cours\", vbDirectory)
    fichier = Dir()
    fichier = Dir()
    While fichier <> ""
        MsgBox "a: " & fichier
        fichier2 = Dir("J:\Accès Données\en cours\" & fichier, vbDirectory)
        While fichier2 <> ""
            MsgBox "b: " & fichier2
            fichier2 = Dir()
        Wend
        fichier = Dir()
    Wend
    End Sub
    PS : Pour l'instant je le mets en msgbox pour tester mon code.

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Pense à consulter la

    Comment obtenir le contenu d'un répertoire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim rep As String
    'obtient le premier fichier ou répertoire qui est dans "c:\"
    rep = Dir("J:\Accès Données\en cours\*.xls", vbDirectory)
    'boucle tant que le répertoire n'a pas été entièrement parcouru
    Do While (rep <> "")
        'teste si c'est un fichier ou un répertoire
        If (GetAttr("J:\Accès Données\en cours\" & rep) And vbDirectory) = vbDirectory Then
            MsgBox "Répertoire " & rep
        Else
            MsgBox "Fichier " & rep
        End If
        'passe à l'élément suivant
        rep = Dir
    Loop
    Dolphy

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    J'ajoute une variante à la proposition de DOLPHY.
    Une fonction qui liste les fichiers même si ils sont dans des sous sous sous ... répertoires.

    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
     
    Sub ListeFichier(Arg_Rep As String)
    Dim Nom As String
    Dim Listesousrep() As String
    Dim Liste As String
    Dim I As Integer
     
    Nom = Dir(Arg_Rep, vbDirectory)
    Do Until Nom = ""
        If GetAttr(Arg_Rep & Nom) = vbDirectory And Nom <> "." And Nom <> ".." Then
            If Liste & "" = "" Then
                Liste = Arg_Rep & Nom & "\"
            Else
                Liste = Liste & ";" & Arg_Rep & Nom & "\"
            End If
        ElseIf Nom <> "." And Nom <> ".." And Right(Nom, 4) = ".xls" Then
     
            Debug.Print Arg_Rep & Nom
        End If
        Nom = Dir
    Loop
     
    Listesousrep = Split(Liste, ";")
    For I = LBound(Listesousrep) To UBound(Listesousrep)
        ListeFichier (Listesousrep(I))
    Next
     
    End Sub
    Comme la fonction dir s'adapte mal au fonction récurcive, j'ai lister les répertoires et on les explore aprés (d'où le tableau).

    En plus je pense qu'il n'est pas utile de lister le répertoire "." ni ".."

    Tu peux utiliser la fonction comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListeFichier("J:\Accès Données\en cours\")
    A toi de remplacer "Debug.Print Arg_Rep & Nom" par un enregistrement des données dans la bonne table


    Il y a surement moyen de faire la même chose en plus simple mais bon

    A+

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/04/2015, 22h18
  2. FileZilla : Problème pour importer des sites
    Par Alex70 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2011, 01h57
  3. Réponses: 2
    Dernier message: 24/09/2009, 13h22
  4. Réponses: 1
    Dernier message: 25/02/2009, 09h44
  5. Réponses: 2
    Dernier message: 26/01/2007, 14h58

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