{Access} Importer plusieurs fichiers excel

rpouget -  
 rpouget -
Bonjour,
je cherche à exporter plusieurs fichiers excel (environ 200) d'un même dossier vers une même table sous access.
Tous les fichiers excel sont construits de la manière.
Merci du coup de main !
Configuration: Windows XP
Firefox 3.5.7

8 réponses

  1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
     
    Bonjour rpouget,

    En fait, du point de vue ACCESS, il s'agit d'importer les fichiers EXCEL ...
    Procédure à suivre :

    Activer la Base ACCESS :

    - Menu Fichier
    - Données externes
    - Importer
    - et .... Démarche assistée en pas à pas .... pour désigner le fichier objet de l'import

    Malheureusement l'import se fait à l'unité, car les principes qui gèrent les bases de données excluent en principe que plus d'un fichier contienne des informations de même nature ...

    Cordialement
    0
    1. rpouget Messages postés 3 Statut Membre
       
      Merci quand même, mais je préfèrerai automatiser. Je suppose qu'il faut un petit programme en VB, mais je ne suis pas assez bon pour ça !
      Cordialement
      0
  2. Manugeo
     
    Si tu touches un peu en VBA, penches-toi sur la méthode docmd.TransferSpreadsheet.
    Elle marche très bien pour ce que tu as à faire.
    0
    1. rpouget Messages postés 3 Statut Membre
       
      Je me doutais qu'il y avait du VB la dessous, mais je ne touche pas suffisamment !
      Si tu as une idée des quelques lignes à écrire, je suis preneur.
      Merci
      0
  3. Manugeo
     
    Est-ce que tous tes fichiers excel contiennent le même format de données, et le même nombre de lignes ?
    Si c'est le cas, je peux te donner quelques lignes de code qui devraient marcher.
    0
  4. rpouget Messages postés 3 Statut Membre
     
    Mes fichiers excel contiennent le même nombre de colonnes avec les mêmes formats de données, mais pas le même nombre de lignes (entre 800 et 1000 lignes).
    Merci si tu as une idées !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Manugeo
     
    Ok, je te prépare un petit bout de code pour tout à l'heure...
    0
  7. Manugeo
     
    Si j'ai bien suivi, tu as 200 fichiers Excel contenant chacun entre 800 et 1000 lignes !
    Pour le fun, combien de colonnes ?
    ta table va être lourde !
    0
    1. rpouget
       
      juste 7 colonnes !
      oui une bonne table, surtout que je répète l'opération une vingtaine de fois.
      Mais vu la bête que je me suis commandé, ça devrai gérer.
      Merci
      @+
      0
  8. Manugeo
     
    Désolé, pas eu le temps de m'en occuper (je suis au boulot, là !)

    J'essayerai d'y jeter un oeil ce week-end.
    0
  9. Manugeo
     
    Bonjour,

    Je viens de trouver 5 minutes pour toi, et voilà le résultat :

    Function ImporteExcel()

    Dim NomFich As String

    NomFich = Dir("D:\TestXl\*.xls")

    Do While NomFich <> ""

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TableTempo", "D:\TestXl\" & NomFich, False, "A1:I300"

    NomFich = Dir
    Loop

    End Function

    Alors, ça fonctionne, mais il faut au préalable que ta table devant recevoir les données d'Excel soit créée avec 7 champs dont le type (texte, date...) correspond à tes colonnes Excel, dans le même ordre que tes colonnes Excel,
    Tu dois personnaliser le code ci-dessus ainsi :
    - A la place de "D:\TestXl\" (dans la première instruction Dir, et dans la ligne DoCmd.Transfer...) , tu mets le répertoire contenant tes fichiers Excel,
    - Tu vérifies la version de Excel, pour que la constante acSpreadsheetTypeExcel? corresponde,
    - Si tes fichiers Excel contiennent en première ligne les en-têtes de colonne, indique True en avant dernier argument,
    - En dernier argument, tu mets la plage de cellules à importer de Excel vers Access. Puisque c'est variable (entre 800 et 1000, m'as-tu dit), tu mets "A1:I1500". Les lignes vides ne seront pas importées.

    Voilà, j'ai fait le test sur ma machine, et ça tourne.
    0
    1. rpouget
       
      Ben ça c'est du coup de main ! Je teste ça de suite.
      Encore merci !
      0