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 :

importer un nombre n de fichiers excel vers Une table access


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut importer un nombre n de fichiers excel vers Une table access
    Bonjour,
    j'ai essayé ce code mais il ne fonctionne pas
    je ne pense pas être très loin
    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
    Sub rojh()
     
     
    'Declaration de la valeur répertoire
    Dim répertoire As String
    'Recuperation de la liste des fichiers
    répertoire = Dir("C:\Users\9305743N\Desktop\programme\dataessai\*.xls", vbDirectory)
    'On passe d'un fichier excel a l'autre
    Do While répertoire <> ""
    'import des donnees du fichier excel dans Access
     
     DoCmd.TransferSpreadsheet , acSpreadsheetTypeExcel12, "Ma_Table", répertoire, True
     
          répertoire = Dir
    Loop
    End Sub
    il me dit qu'il n'a pas trouvé mon fichier, que le chemin est inexistant
    merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Bonjour,

    Un par un les fichiers !

    le *.xls ne fonctionne donc pas avec docmd.transfer

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    merci pour la reponse,
    mais j'ai 1500 fichiers, je ne peux pas les faire un par un
    il y a t-il une fonctionnalité pour le réaliser?

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Il faut faire une boucle avec Dir() pour les traiter 1 par 1.

    Le premier dir avec le chemin et *.xls
    Le Deuxième dir sans paramètre pour qu'il prenne la suite. cf le F1 pour connaitre le fonctionnement du Dir()
    et la faq
    http://access.developpez.com/faq/?pa...mpteFichierRep

    Pour un exemple proche de ce que tu souhaites faire.

    Pour chaque fichier, dans la boucle, tu lances la commande transfert.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    j'ai deja une boucle pour les dir non?
    Do While répertoire <> "" ??
    Si j'enlève DoCmd.TranferSpreadsheet je peux le remplacer par quoi?
    J'ai modifié ma macro en:
    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
    Sub rojh()
     
     
    'Declaration de la valeur répertoire
    Dim répertoire As String
    Dim compteur As Long
    'Recuperation de la liste des fichiers
    répertoire = Dir("C:\Users\9305743N\Desktop\programme\dataessai\*.xls", vbDirectory)
    'On passe d'un fichier excel a l'autre
    Do While répertoire <> ""
    compteur = compteur + 1
    'import des donnees du fichier excel dans Access
     
     DoCmd.TransferSpreadsheet , acSpreadsheetTypeExcel12, "Ma_Table", répertoire, True
     
          répertoire = Dir
    Loop
    End Sub
    mais je ne sais pas quoi faire du DoCmd , ni si ma boucle est celle dont vous parliez? car j'ai fait la meme boucle que la FAQ

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    oups ! effectivement.

    Le dir() ne donne que le nom de fichier pas le répertoire.

    Il faut donc stocker le répertoire dans une variable et la concaténer au résultat du dir() dans la commande.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Il faut donc stocker le répertoire dans une variable et la concaténer au résultat du dir() dans la commande. .

    alors j'ai stocké le répertoire dans une variable
    mais pour le contaténer au résultat on fait comment
    est ce que ca au moins c'est correct?
    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
    *
    Sub rojh()
     
     
    'Declaration de la valeur répertoire
    Dim répertoire As String
    Dim compteur As Long
    Dim NomFichier As String
    'Recuperation de la liste des fichiers
    répertoire = Dir("C:\Users\9305743N\Desktop\programme\dataessai\*.xls", vbDirectory)
    'On passe d'un fichier excel a l'autre
    Do While répertoire <> ""
    compteur = compteur + 1
    'import des donnees du fichier excel dans Access
     NomFichier = Dir(répertoire)
     Loop
    End Sub

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    absolument pas !
    D'abord un dir("c:\...\*.dfd") pour récupérer le premier nom de fichier puis un Dir() pour récupérer les noms de fichiers suivant.

    Fait F1 sur le Dir() pour voir comment on l'utilise.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    F1 ne marche pas chez moi, il me dit qu'il n'a rien trouvé

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Je m'excuse je n'ai jamais codé avec Access

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    j'ai seulement codé en VBA pour excel (un peu) et les fonctions ne sont pas exactement les memes
    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
    Sub rojh()
     
     
    'Declaration de la valeur répertoire
    Dim répertoire As String
    Dim compteur As Long
    Dim NomFichier As String
    'Recuperation de la liste des fichiers
    répertoire = Dir("C:\Users\9305743N\Desktop\programme\dataessai\*.dfd")
    'On passe d'un fichier excel a l'autre
    Do While répertoire <> ""
    compteur = compteur + 1
    'import des donnees du fichier excel dans Access
     NomFichier = Dir()
     
    Loop
    End Sub
    ceci n'est toujours pas correct, mais je vois pas comment écrire le deuxieme dir , j'ai cherché sur internet aussi mais aucune information m'a aidé

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Voici comment ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim fichierCourant as string
    dim repertoire as string
    repertoire = "c:\....\"
    fichierCourant = dir(repertoire & "*.xls")  '1er fichier de la liste
     
    while fichierCourant<>""
        docmd.transfer... ,,, repertoire & fichierCourant
        fichierCourant = dir()  'fichier suivant
    wend
    c'est tout.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    La fonction Dir() est une fonction VBA. Elle est identique sous ACCESS, EXCEL, WORD ou n'importe quel produit qui accepte VBA.

    Si tu n'as pas accès au F1, complète ton installation. Tu vas en avoir besoin.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    Merci
    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
     
     
    Sub charles()
    Dim fichierCourant As String
    Dim repertoire As String
    Dim tablatabla As String
    Dim sFichier As Scripting.File
    repertoire = "C:\Users\9305743N\Desktop\programme\dataessai"
    fichierCourant = Dir(repertoire & "*.xls")  '1er fichier de la liste
     
    While fichierCourant <> ""
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12,tablatabla, repertoire & fichierCourant, True
         'DoCmd.TransferSpreadsheet acImport, , Left(sFichier.Name, Len(sFichier.Name) - 4), sFichier.Path, True
        fichierCourant = Dir()  'fichier suivant
    Wend
     
    End Sub
    j'ai mis ca comme ca mais ca ne donne rien. Manque-til encore quelquechose?, j'ai essaye d'adapter le DoCmd , ma table access je l'ai nommé tablatabla, mais le deuxieme terme je savais pas trop quoi mettre pour : acSpreadsheetTypeExcel12
    le programme ne me dit rien, pas de message d'erreur, mais rien n'est écrit non plus
    j'ai mis des points d'arret pour voir où ca peche, et il passe de while à end sub

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Ok !

    Donc s'il passe de While à End Sub cela indique que la condition (fichierCourant <> "") est fausse.

    Reste à analyser pourquoi elle est fausse !
    Pourquoi fichierCourant est vide !
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  16. #16
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    J'ai reussi à rentrer dans la boucle , il manquait un "\" dans "\.xls

    mais ensuite il me met " fin ou débogage " la fenetre " "l'action ou la méthode requiet un argument Nom table"
    j'ai pourtant mis tablatabla comme nom de table ?
    "

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Et tu as ajouté l'anti-slash où ? C'est peut-être de la que vient le problème.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  18. #18
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    fichierCourant = Dir(repertoire & "\*.xls") '1er fichier de la liste

  19. #19
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Et quand tu exécutes l'instruction docmd tu ne l'as plus...
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  20. #20
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 175
    Points : 25
    Points
    25
    Par défaut
    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
    Sub charles()
    Dim fichierCourant As String
    Dim repertoire As String
    Dim tablatabla As String
    Dim sFichier As Scripting.File
    repertoire = "C:\Users\9305743N\Desktop\programme\dataessai\"
    fichierCourant = Dir(repertoire & "*.xls")  '1er fichier de la liste
     
    While fichierCourant <> ""
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tablatabla, repertoire & fichierCourant, True
         'DoCmd.TransferSpreadsheet acImport, , Left(sFichier.Name, Len(sFichier.Name) - 4), sFichier.Path, True
     
        fichierCourant = Dir()  'fichier suivant
    Wend
     
    End Sub
    ca fonctionne pas comme ca non plus

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/06/2014, 19h50
  2. [AC-2000] VBA, importation particulière fichier Excel vers une table access
    Par ElCyril dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/12/2010, 01h05
  3. Réponses: 3
    Dernier message: 20/08/2010, 21h48
  4. Réponses: 3
    Dernier message: 20/04/2010, 09h31
  5. Réponses: 5
    Dernier message: 17/01/2009, 15h04

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