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 CSV qui marche en manuel mais pas automatique ni en VBA depuis Excel


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut Import CSV qui marche en manuel mais pas automatique ni en VBA depuis Excel
    Salut,

    J'ai un fichier CSV de la sorte:

    URN,Balance,Start date,Charge off date,Customer Date of Birth,State,Telephone number,Email address,Last payment date,Last payment value,Payment frequency,Payment plan?,Single / Joint accounts
    1,"$61,737.00",9/28/2003,5/5/2015,2/28/1975,DE,1,1,12/27/2015,"$3,366.00",Monthly,No,Single
    On note le format de date américaine, pas de souci. On note le séparateur de colonne qui est une virgule. Le problème c’est que c’est aussi le séparateur de millier. Sauf que les nombres sont encadrés de doubles quottes : "

    Donc en important manuellement :
    - Ribbon External Data
    - Text File, j’ajoute à une table en particulier
    - Je remplis tout bien comme il faut (cf screenshot), en insistant bien sur le « text qualifier » de bien mettre les double quote, et en ignorant les 2 champs qu’il pourrait penser créer comme il y a 2 virgules de plus que de colonnes (2 champs numériques), j’oubie pas non plus le format de date.

    Nom : Imports Specs.png
Affichages : 553
Taille : 45,2 Ko

    - Dans l’écran suivant je précise bien que le nom des champs (qui matchent exactement la base) sont en première ligne et ça marche nickel, pas de souci.

    L’automation du process, je cale… L’erreur commence assez tot dans le process :

    1 / Si je sauve la spécification de l’import (cf screenshot au dessus), et que je reviens faire un import. Je charge la spécification, je sélectionne ensuite que le nom des champs est en première ligne, il me dit alors que la spécification a changé (autrement dit je suppose à cause de la précision des champs en première ligne, option non disponible quand on crée la spécification par ailleurs), si je l’enregistre ou pas, ça marche aussi… La première fois !

    2/ En effet, dans le cas où je l’ai enregistrée, si je viens refaire un import, je charge la spécification, cela ne marche plus et mes deux champs numériques ne sont pas importés (ceux qui ont une virgule).

    Dans mon import de VBA (depuis Excel), que j’ai la spécification avec ou sans le critère de la première ligne contenant les champs, idem, mes deux champs numériques ne sont pas importés…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objAccess.DoCmd.TransferText acImportDelim, "Pricing Import Specification", Tab1, PathCSV1 & FileCSV1, True
    En gros, ca marche en manuel mais pas en automatique !

    Grrr....

    Une idée du pb?

    Merci!

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Avez-vous essayé de mettre le point (.) comme symbole décimal dans la spécification d'importation.

    Le problème rencontré pas Access est que la virgule est également le symbole décimal.

    Sinon regarder dans la table système "MSysIMEXSpecs", pour voir l'enregistrement correspondant à votre spécification d'importation (table système MSysIMEXSpecs) et ses paramètres.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    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 962
    Par défaut
    Bonsoir,
    il faudrait préciser si les champs de la table de destination est de type numérique car, je ne crois pas qu'il soit possible d'importer directement dans un champ numérique une donnée formatée ainsi :
    "$61,737.00"
    C'est seulement possible avec les dates et dans ce cas il faut quand même préciser le format, le séparateur et si l'année est sur 4 chiffres.
    Pour ce type de données, il faudrait d'abord importer dans un champ texte et ensuite le convertir au format monétaire.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    En fait, tout dépend des paramètres régionaux, si la langue est définie en anglais (US) dans les paramètres régionaux et le format monétaire est le format US, alors ça fonctionne.

    Je l'ai testé et ça fonctionne en VBA aussi bien pour les champs monétaires que pour les dates, dans le cas contraire c'est problématique...

    Cdlt,

    PS : il faut aussi opter pour le délimiteur de texte "".
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    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 962
    Par défaut
    Bizarre... j'ai testé en remplaçant le $ par l'€, en enlevant le séparateur de milliers, en spécifiant le séparateur de décimales le '.' et en utilisant un paramètre d'importation comme indiqué : j'ai eu une erreur d'importation sur les 2 champs. Serait-ce à cause des délimiteurs de texte dans un champ numérique ?

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Salut tee_grandbois,

    Le mieux c'est que je retrouve ma base et que je la poste.

    Je précise bien que j'ai changé dans les paramètres régionaux la langue en anglais(us) et le format monétaire dollar us.

    Edit:
    Ci-joint la base à tester avec un formulaire pour exécuter le code VBA.

    à+
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    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 962
    Par défaut
    Rectification, je viens de réessayer et cela a fonctionné. C'était à cause du séparateur de décimales de mes paramètres d'importation qui était resté avec la virgule.
    Par contre, pour répondre à Lameth à propos de ceci
    Je charge la spécification, je sélectionne ensuite que le nom des champs est en première ligne, il me dit alors que la spécification a changé (autrement dit je suppose à cause de la précision des champs en première ligne, option non disponible quand on crée la spécification par ailleurs)
    pour avoir l'indication des champs en première ligne, il faut l'indiquer sur l'écran ci-dessous avant de l'enregistrer par le biais du bouton en bas à gauche :

    :Pièce jointe 240621

Discussions similaires

  1. Script qui marche sous FF mais pas sous IE
    Par xclam dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 11/05/2007, 12h26
  2. Requete qui marche une fois mais pas deux
    Par maxvador dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/01/2007, 15h07
  3. Fonction qui marche sous FF mais pas IE
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 14h07
  4. Pb sur une fct qui marche sous mozilla mais pas ie
    Par chpog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/09/2005, 11h26
  5. Réponses: 2
    Dernier message: 04/06/2004, 11h11

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