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 :

import XLS vers Access avec docmd.transfertext ou docmd.transfertspreadshhets


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut import XLS vers Access avec docmd.transfertext ou docmd.transfertspreadshhets
    bonsoir,

    voila je me prend la tete depuis tout a l'heure sur un import de fichier XLS vers ma table access.

    j'ai realisé l'import a la main, une première fois, seulement, lorsque j'importe le fichier XLS, je n'ai pas le bouton "advanced" pour pouvoir enregistrer le type d'import.

    du coup je ne sais pas comment faire pour importé ce fichier XLS

    j'ai essayé avec docmd.transfertext et transfertspreadsheets mais aucuns des deux ne fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet , , "dbo_test", S_Chemin_Fichier, False
    me renvoi l'erreur "le champs "F1" n'est pas present dans dbo_test" (je sais qu'il n'y est pas, d'ailleur il n'est pas non plus dans le fichier excel que j'essaye d'importé...)

    pour le docmd.transfertext, je ne peut meme pas tester car je n'ai pas de type d'import...

    quelqu'un aurais une idée pour :

    savoir quel type d'import il me faut pour importé du XLS dans une table Access ?
    Sinon comment faire pour que le docmd.spreadsheets fonctionne ?
    ou enfin me dire tout simplement si il y a une autre facon d'automatisé l'import XLS dans ma table ?

    merci a vous

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Lorsque l'on fait une importation manuelle, les champs prennent les noms :champs1, champs2, ...

    Pour refaire une importation excel dans la même table avec la commande DoCmd.TransferSpreadsheet , il faut renommer champs1 en F1, champs2 en F2, ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par helas
    Lorsque l'on fait une importation manuelle, les champs prennent les noms :champs1, champs2, ...

    Pour refaire une importation excel dans la même table avec la commande DoCmd.TransferSpreadsheet , il faut renommer champs1 en F1, champs2 en F2, ...
    je suis obliger de renomé les champs de ma table en "F1", "F2" etc ???

  4. #4
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    si le fichier excel ne contient pas le nom des champs, Oui

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    bon je viens de reussir, il recherchais sur la première feuille du classeur XLS, alors que mes donné etait sur la seconde ...

    est il possible de pouvoir indiqué quelle feuille il doit traité ?

  6. #6
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    si lors de l'importation manuelle du fichier excel, l'option La première ligne contient le nom des champs a été cochée, on doit retrouver le nom des champs dans la table créée (dbo_test).

    si l'importation du même fichier est effectuée par DoCmd.TransferSpreadsheet, le message d'erreur "le champs "F1" n'est pas present dans dbo_test" ne doit pas s'afficher

    Vérifier que les champs présents dans le fichier excel soient présents dans la table

  7. #7
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, NomTable, fichier, True, "Feuil1"

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par helas
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, NomTable, fichier, True, "Feuil1"
    merci, mais j'ai cette erreur :

    The Microsoft Jet database engine could not find the object "sheet". Make sure the object exists and that you spell its name and the path name correctly. (Error 3011)
    "sheet" etant le nom de la feuille qu'il traite...
    j'ai bien verifier, le chemin du fichier est bien le bon, et la feuille "sheet" existe bien(et est bien orthographiée)

  9. #9
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    avec mes excuses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, NomTable, fichier, True, "Feuil1!"

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    merci bcp cela fonctionne trés bien.

    petite evol :

    comment faire pour que le fichier a inséré soit un fichier deja ouvert dans lequel je viens de faire des modifs ?

    j'ai essayé de remplacer le parametre du nom du fichier par "activeworkbook.name" mais j'ai une erreur "un argument n'est pas du bon type"...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je ne pense pas que tu puisses, cette commande n'est pas prévue pour cela.

    Pour récupérer un nom de fichier ouvert il va falloir que tu passes par automation pour te connecter à Excel, va faire un tour .

    Starec

Discussions similaires

  1. [AC-2003] Import Excel vers Access avec choix du répertoire et du fichier *.xls
    Par jeanpierre78 dans le forum IHM
    Réponses: 12
    Dernier message: 19/10/2011, 12h14
  2. Réponses: 3
    Dernier message: 13/03/2010, 22h37
  3. Importer xls vers table access
    Par ariehh dans le forum VBA Access
    Réponses: 6
    Dernier message: 20/07/2009, 16h44
  4. import excel vers access avec bouton "parcourir"
    Par zeloutre dans le forum Access
    Réponses: 3
    Dernier message: 04/04/2007, 19h06
  5. Problème d'importation .xls vers Access
    Par PsykotropyK dans le forum Access
    Réponses: 1
    Dernier message: 06/09/2006, 16h31

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