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 :

[A-00] Importer des données Excel vers Access


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Points : 79
    Points
    79
    Par défaut [A-00] Importer des données Excel vers Access
    Bonjour !

    pour les besoins de mon application je dois importer des données contenues dans un fichier excel sur une base ACCESS.

    il s'agit d'importer les données de Chiffre d'affaires du mois, pour un client (identifié par un code) et un type de produit.

    la table de destination est construite ainsi :
    - code client (qui n'est pas l'identifiant car il y a des redondances)
    - Raison sociale
    - Produit
    - les chiffres d'affaires de tous les mois ('2008/01' pour le mois de janvier, '2008/02, etc....., jusqu'a '2009/12' soit 24 colonnes)

    mon fichier excel se présente sous la forme :- code client
    - Produit
    - [ l'intitulé du mois] donc par exemple, si je souhaite importer les données de février 2009, la colonne de mon fichier excel sera '2009/02'


    Sur un formulaire, j'ai crée un bouton avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub btImportImportation_Click()
        Dim chemin As String
     
        chemin = "C:\Documents and Settings\Moi\Bureau\TESTS\importclient.xls"
     
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Biblio", chemin, True
     
    End Sub
    Malheureusement, au lieu d'actualiser les champs de la table avec les données de février, Access me crée de nouveaux enregistrements à la fin de ma table...

    Comment faire pour lui indiquer de faire une mise à jour des champs et non une création?


    Question bonus !

    Comment faire pour, lors d'un clic sur un bouton, qu'une fenetre s'ouvre permettant à l'utilisateur d'aller chercher son fichier? (une fenetre explorateur en gros)

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Points : 50
    Points
    50
    Par défaut
    Si ton application est en vba access, essaye avec la fonction DoCmd.TransferText

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Points : 79
    Points
    79
    Par défaut
    il me dit que le fichier source est en lecture seule, pourtant ce n'est pas le cas dans les propriétes du fichier excel....

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Points : 79
    Points
    79
    Par défaut
    pour l'instant j'ai trouvé comme solution d'importer une table correspondant au fichier excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import", chemin, True
    donc mon fichier est importer dans la table... 'Import' ^^

    cette table possède les champs code client, libellé du produit et l'intitulé du mois.

    ensuite je fais un UPDATE de ma table Biblio avec cette nouvelle table, ce qui à pour effet d'inserer (ou d'écraser) les données présente dans la table biblio, au champ du mois correspondant a celui de la table Import.

    enfin je supprime la table 'Import' en faisant un DROP TABLE.


    je trouve cette solution un peu bancale...


    voici donc le code de ma fonction :

    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
    Private Sub importation()
     
        Dim chemin As String
     
        chemin = "C:\Documents and Settings\moi\Bureau\importclient.xls"
     
        Annee = Me.lstImportChxAn.Value
        Me.RecupMois.RowSource = "SELECT code FROM Mois where libelle like '" & Me.lstImportChxMois.Value & "' "
        Mois = Me.RecupMois.ItemData(0)
     
        libmois = Annee & "/" & Mois
     
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import", chemin, True
     
        DoCmd.RunSQL ("UPDATE Biblio INNER JOIN Import ON (Biblio.Pdt = Import.Pdt) AND (Biblio.Coclico = Import.Coclico) SET Biblio.[" & libmois & "] = [Import].[" & libmois & "];")
     
        DoCmd.RunSQL ("DROP TABLE Import;")
     
        MsgBox "L'importation s'est terminée avec succès !", vbInformation, "Importation terminée"
    End Sub

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut
    Citation Envoyé par Slici Voir le message
    Question bonus !

    Comment faire pour, lors d'un clic sur un bouton, qu'une fenetre s'ouvre permettant à l'utilisateur d'aller chercher son fichier? (une fenetre explorateur en gros)
    Ceci peut t'aider

    http://access.developpez.com/faq/?pa...#AffBoitDialog

Discussions similaires

  1. Réponses: 25
    Dernier message: 26/04/2011, 13h58
  2. [AC-2003] importation de donnée excel vers access : comment optimiser les tables ?
    Par pshd22 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 31/03/2009, 18h17
  3. Importé des donnée Excel vers SAP (MM01)
    Par eddassiabdelhak dans le forum SAP
    Réponses: 3
    Dernier message: 02/02/2009, 12h36
  4. Importer des données Excel vers BD Access
    Par technopole dans le forum Access
    Réponses: 1
    Dernier message: 03/07/2006, 14h37
  5. Importer des données excel vers outlook
    Par faayy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/10/2005, 09h30

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