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 :

Importation d'un fichier excel dans une table access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut Importation d'un fichier excel dans une table access
    Bonjour,

    J'ai trouvé plein de posts sur ce sujet, mais j'ai encore un problème, c'est pourquoi je crée celui-ci.

    Mon projet Access contient une table de recettes "Recipes". Cette table possède une relation avec une autre table.

    Depuis le formulaire affichant la table "Recipes" je peux exporter les données de la table dans un fichier Excel. J'aimerai pouvoir modifier ce fichier sous excel et le réimporter dans access.

    C'est là que ça coince. J'ai réussi à faire l'importation dans une nouvelle table, mais lorsque j'essaie de le faire directement dans la table "Recipes" un message d'erreur s'affiche, indiquant que toutes les données n'ont pas pu être ajouter à la table. Je pense que la cause en ait que le champs contenant le nom de la recette est la clé primaire et il ne peux pas contenir de doublons. Comment puis-je écraser ou effacer tous les champs de ma table ? Je ne peux pas effacer la dite table, à cause de la relation.

    D'avance merci pour votre aide

    CODE DU BP D'IMPORTATION :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Importation depuis un fichier excel
     
    Private Sub Commande76_Click()
    On Error GoTo Err_Commande76_Click
     
        Call import_excel("Recipes", "d:\data\rezepte\rezepte.xls")
     
    Exit_Commande76_Click:
         Exit Sub
     
    Err_Commande76_Click:
         MsgBox Err.Description
         Resume Exit_Commande76_Click
    End Sub
    CODE DE LA FONCTION D'IMPORTATION
    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
     
    '-------------------------------------
    'import_excel
    '-------------------------------------
     
    Sub import_excel(requête As String, filename As String)
     
    'Renvoi en cas d'erreur
    On Error GoTo import_excel_err
     
    'Importation
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, requête, filename, True
     
    'Message ok
    MsgBox "Import OK!" & (Chr(13)) & filename, vbInformation
     
    Exit Sub
     
    'Gestion en cas d'erreur:
    import_excel_err:
     
    'Message erreur
    MsgBox "Import Fehler!" & (Chr(13)) & filename, vbCritical
     
    End Sub

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    Une piste parmi d'autres ....

    - je créerais une table "Recipes_Tmp" identiques à "Recipes".

    - J'importerais les données d'Excel dans cette table (prendre soin de la vider avant ...)

    - Puis je ferais une requête de mise à jour de "Recipes" avec les éléments de "Recipes_Tmp" ayant la même clé primaire ....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Hello,

    Merci pour ta réponse rapide.

    J'ai utiliser ta solution avec une deuxième table.

    Par contre je ne sais pas comment faire la requête de mise à jour. Peux-tu me donner un petit coup de pouce ? Merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    Un exemple de SQL ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE Recipes INNER JOIN Recipes_Temp ON Recipes.NoRecipe = Recipes_Temp.NoRecipe 
    SET Recipes.Description = [Recipes_Temp].[Description], Recipes.QteAA = [Recipes_Temp].[QteAA], Recipes.Autres = [Recipes_Temp].[Autres];

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Hello,

    Merci pour ton aide

    Mais je ne comprends pas où et comment je dois utiliser cette requête...

    Peut-on faire la même fonction (mise à jour d'une table à partir d'une autre table) avec les fonctions VBA ?
    Ou peut-on copier une table dans une autre, même si cette dernière à une relation avec une autre table ?

    P.S.: Je travaille sur Access 2003

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    À l'intérieure de ta Sub ...

    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
     
    '-------------------------------------
    'import_excel
    '-------------------------------------
     
    Sub import_excel(requête As String, filename As String)
     
    'Renvoi en cas d'erreur
    On Error GoTo import_excel_err
     
    'Importation dans la table temporaire
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, Recipes_Temp, filename, True
    '**** Mise à jour
    Dim MonSQL as String
     
    MonSQL="UPDATE Recipes INNER JOIN Recipes_Temp ON Recipes.NoRecipe = Recipes_Temp.NoRecipe SET Recipes.Description = [Recipes_Temp].[Description], Recipes.QteAA = [Recipes_Temp].[QteAA], Recipes.Autres = [Recipes_Temp].[Autres];"
     
    CurentDB.Execute MonSQL
     
    '****
    'Message ok
    MsgBox "Import OK!" & (Chr(13)) & filename, vbInformation
     
    Exit Sub
     
    'Gestion en cas d'erreur:
    import_excel_err:
     
    'Message erreur
    MsgBox "Import Fehler!" & (Chr(13)) & filename, vbCritical
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/02/2014, 15h21
  2. [AC-2002] Importer fichier Excel dans une table Access
    Par Kalymar dans le forum Access
    Réponses: 4
    Dernier message: 28/05/2011, 16h09
  3. [AC-2000] Import fichier Excel dans une table Access déjà existante
    Par icecreams01 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/05/2010, 16h07
  4. Réponses: 3
    Dernier message: 20/04/2010, 10h31
  5. Réponses: 7
    Dernier message: 04/10/2005, 19h21

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