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 :

Méthode DoCmd.TransferSpreadsheet acImport


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut Méthode DoCmd.TransferSpreadsheet acImport
    Bonjour.
    Je travaille avec Access 2007-2016 et j'ai un soucis avec l'utilisation de DoCmd.TransferSpreadsheet acImport
    Je dois importer les 2 premières colonnes qui ont des en-têtes d'un onglet excel vers une table Access.
    Je ne sais pas gérer ces 2 colonnes.

    J'ai essayé ;
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DoCmd.TransferSpreadsheet acImport, 2, "TableACCESS", "Chemin.fichierExcel.xls", 1, "OngletExcel"
    DoCmd.TransferSpreadsheet acImport, 2, "TableACCESS", "Chemin.fichierExcel.xls", 1, "OngletExcel", "A:B!"
    DoCmd.TransferSpreadsheet acImport, 2, "TableACCESS", "Chemin.fichierExcel.xls", 1, "OngletExcel" & "!"

    Mais rien de tout ça ne fonctionne.

    J'ai un peu avant une importation qui se fait bien pour les 8 premières colonnes d'un autre onglet du même fichier excel avec le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.TransferSpreadsheet acImport, 8,  "TableACCESS", "Chemin.fichierExcel.xls", 1, "OngletExcel" & "!"
    Pouvez vous m'aider ?

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,

    De mémoire il faut spécifier la feuille et la plage dans Range.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel12,"matable","monfichier.xlsx",true,"Feuil1!A:B"

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 639
    Par défaut
    Ce qui fonctionne bien aussi, c'est de faire l'import manuellement la 1ère fois et de l'enregistrer
    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSavedImportExport ("Importation-LeNomQueJeLuiAiDonné")

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Merci à tous.

    En fait la méthode DoCmd.TransferSpreadsheet acImport importe une feuille entière d'Excel (pas de possibilité de choisir des colonnes).
    Du coup, j'ai copier mes colonnes par un traitement Excel dans une nouvelle feuille que j'ai copiée dans Access puis supprimée.

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Absolument pas !

    Cette commande importe bien la zone choisie d'une feuille dans un table existante ou pas.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    Bonsoir,
    tu peux exécuter ce genre de requête directement dans le requêteur d'ACCESS.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [frm].[Champ1] ,[frm].[Champ2] FROM [Feuiile1$] as  frm IN 'C:\Myrep\MyClasseur.XLSX'[excel 12.0;HDR=Yes;]

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir Thumb Down,
    c'est également une solution
    mais pour ce qui est de l'utilisation de la commande TransferSpreadsheet en spécifiant les colonnes à utilliser, loufab a donné la solution à 69Pierre dès le départ, elle n'a pas semblé lui convenir ... on saura peut-être un jour pourquoi

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,

    On peut même y accéder par un OpenDatabase en DAO.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 139
    Par défaut
    Hum, pardon si je dérange...

    Peut-on trouver plus d'explications sur ce qu' a proposé ThumbsDown ? je fais pas mal d'aller-retours Access-Excel et ça me semble être une voie de simplification

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,

    Non tu ne déranges pas.

    Pour la simplification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [frm].[Champ1] ,[frm].[Champ2] FROM [Feuil1$] as  frm IN 'C:\Myrep\MyClasseur.XLSX'[excel 12.0;HDR=Yes;]
    La clause IN (à ne pas confondre avec l'opérateur IN()) permet d'utiliser une source externe pour la requête.

    Elle dispose de plusieurs types de source possible :
    Base access, utile quand on ne veut pas lier la table.
    Excel, DBase...

    Voici le lien vers cette clause SQL.
    https://learn.microsoft.com/en-us/of...oft-access-sql

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 139
    Par défaut
    Merci loufab

    Je connaissais déjà pour faire des requêtes entre bases Access, mais là, l'éventail de possibilités vient de s'ouvrir en grand !

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

Discussions similaires

  1. [AC-2003] Requête sql avec méthode DoCmd.Runsql bloqué dans une transaction
    Par rana dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/03/2010, 13h20
  2. [AC-2007] La méthode Docmd.RunSQL ne me permet pas d'ouvrir un Recordset
    Par Kallamou dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/09/2009, 13h03
  3. problème range de docmd.transferSpreadsheet
    Par nelob dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/07/2009, 15h20
  4. Réponses: 15
    Dernier message: 07/04/2008, 08h48
  5. Docmd.transferspreadsheet et problème de numéroauto
    Par aba_tarn dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/09/2007, 08h29

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