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 plusieurs fichiers dans une BDD de facon automatique


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut Importer plusieurs fichiers dans une BDD de facon automatique
    Bonjour

    J'ai et j'aurais tous les mois entre 20 et 25 fichier .xls ou .csv, configurés de la même manière à importer dans la même table de BDD Access.

    Seul le nom du fichier et de l'onglet sont différents entre les fichiers
    Un fichier a le même nom que son onglet

    J'aurais voulu savoir s'il était possible d'importer l'ensemble des ces fichiers en une seule fois?
    comment?

    Merci de votre aide

    Fred

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Salut,

    comment veux tu les importer ? Par code VBA ou manuellement ?
    As tu déjà ta base de données construite ?
    Est ce que tous ces fichiers ont des noms complétement différents ou un peu similaire (du type fichier_1, fichier_2,...) ?
    Tes données dans les différents fichier sont elles liées ou alors complétement différentes ?

    Avec ces précisions j'en saurai plus pour t'aider...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut
    Bonjour

    Et merci de ton aide

    alors :
    Si possible en code VBA, pour que l'importation se fasse tte seule, ou presque .
    Ma base de donnée contien pour le moment que les données d'un fichier... j'ai arréter d'importer qd j'ai vu le temps que cela pourrait me prendre avec mes 50 fichiers.

    Les nons des fichiers sont tous completement différents, ce sont des num du type : 1121775032_9A0000300966_1
    sans ordre particulier, ni cohérence facile à déceler...

    les données sont normalement toujours organisées de la même manière
    Ordre des colonnes, types de données...


    Je pense que j'ai répondu à toutes tes questions,

    Je rete dispo ds le cas contraire...

    Merci de ton aide

    Fred

  4. #4
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Dans ce cas avec le code VBA il y aurait une méthod, voilà la structure de ce que tu pourrais faire :

    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
    Private sub  Importation()
     
    Dim rst as DAO.RecordSet
    Dim bd as DAO.DataBase
     
    db = OpenDataBase("Chemin d'accès à la base")
    rst = db.OpenRecordSet("Nom de la table")
     
    Worbooks("Nom du fichier").Worksheets("Nom de la feuille").Activate
     
    Dim i%
     
    For i% = 1 to 10
     
    With rst
        .MoveLast
        .AddNew
     
        .Fields("Nom du champ").Value = Cells( i%, 1 ).Value
        .Update
    End With
     
    Next
     
     
    End Sub
    Il faut que tu mette en référence DAO dans VBA.
    Si tu veux des explications plus détaillées parce que tu ne comprend pas le code aucun problème dis moi où tu comprend pas et je t'explique dans le détail...


    [EDIT]: Si la structure est la même pour tout les fichiers alors une fois ton code construit tu n'auras qu'à changer le nom du fichier et celui de la feuille afin d'importer les données que tu veux.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut
    re

    J'ai du mal a faire fonctionner le code.

    Déjà, ou dois-je le mettre?
    Dans une Module Excel?

    Ensuite j'ai ceci,

    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
    Private Sub Importation()
     
    Dim rst As Recordset
    Dim db As Database
     
    Set db = DBEngine.OpenDatabase("C:\Documents and Settings\mayol\Bureau\Tableaux de bord - 2eme mouture\BDD\telephonie\test.mdb")
    Set rst = db.OpenRecordset("Fixes")
     
    Workbooks("120794199X_9A0000341225_1.xls").Worksheets("120794199X_9A0000341225_1").Activate
     
    Dim i%
     
    For i% = 1 To 10
     
    With rst
        .MoveLast
        .AddNew
     
        .Fields("Nom du champ").Value = Cells(i%, 1).Value
        .Update
    End With
     
    Next
     
     
    End Sub
    il me met une erreur à la ligne
    Workbooks("120794199X_9A0000341225_1.xls").Worksheets("120794199X_9A0000341225_1").Activate

    "l'indice n'appartient pas a la selection"


    Fred

  6. #6
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Tu dois bien le mettre dans le module Excel mais je pense que ca marche aussi dans le module Access car VBA est universeil pour les programmes office (vérifie donc).
    Sinon pour ton erreut es-tu bien sur que ton fichier est celui-ci ? (avec tout ces nombres)
    Sinon ce que tu peux faire, c'est peut être ca le problème c'est que tu dois ouvrir ton fichier Excel avant (soit manuellement soit avec VBA)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut
    Re

    En fait je me suis trompé dans l'extention du fichier, ct un .scv

    Sinon, ca ne m'importe que la 1er colonne
    que faudrait-il faire pour importer les autres?


    Merci

    Fred

    Au passage... j'ai vu que tu étais du 06!! j'suis de nice lol

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors montre moi la structure de ton fichier Excel
    Tes différentes colonnes rapporte-elle à un même champ ?
    Ou alors chaque colonne coreespond à un champ différent ?
    Combien as-tu de colonne en tout ?
    Et de ligne ?


    P.S: moi je suis sur Sophia Antipolis

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut
    re

    Alors :Voici un exemple de fichier
    Le nb de colonne est le meme
    Le nb de ligne peut varier entre 1000 et 25000

    Merci

    fred

    Ps t'est étudiente en quoi? informatique?
    Fichiers attachés Fichiers attachés

  10. #10
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors l'exemple en dessous c'est pour les feuilles Excel, pour les cvs je ne sais pas faire, il faut que je regarde à droite à gauche mais je ne garantie rien.


    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
    Private Sub Importation()
     
    'définit la table : pour mettre d'autre tables rajouter dim rst2 as recordset par exemple
    Dim rst As Recordset
     
    'définit la base de de données
    Dim db As Database
     
    'chemin d'accès à la base de données
    Set db = DBEngine.OpenDatabase("C:\Documents and Settings\mayol\Bureau\Tableaux de bord - 2eme mouture\BDD\telephonie\test.mdb")
     
    'on affecte une table à un objet défini recordset
    Set rst = db.OpenRecordset("Fixes")
     
    'on active le classeur
    Workbooks("120794199X_9A0000341225_1.xls").Worksheets("120794199X_9A0000341225_1").Activate
     
    Dim i%
     
    'on fait la boucke pour parcourir 10 lignes
    For i% = 1 To 10
     
    With rst
        .MoveLast
        .AddNew
     
    'la cellule 1,1 corespond à la cellule 1, A
        .Fields("Nom du premier champ").Value = Cells(i%, 1).Value
        .Fields("Nom du deuxième champ").Value = Cells(i%, 1).Value
        .Update
    End With
     
    Next
     
     
    End Sub

    Sinon je suis dans les stats mais je fais bcp de base de données (avec VBA)

Discussions similaires

  1. [XL-2010] Importer des données de plusieurs fichiers dans une feuille excel en VBA
    Par Alibel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/10/2013, 15h16
  2. probleme de taille d'import de fichier dans une bdd mysql
    Par laetiheu dans le forum Installation
    Réponses: 17
    Dernier message: 29/08/2007, 12h07
  3. Réponses: 10
    Dernier message: 12/06/2006, 16h45
  4. [Type de données]Comment sauvegarder fichiers dans une bdd?
    Par splinternabs dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/04/2006, 15h14
  5. Upload et enregistrement du nom du fichier dans une bdd
    Par johan_barbier dans le forum XMLRAD
    Réponses: 8
    Dernier message: 26/09/2005, 12h02

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