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 :

Pb de typage de données lors d'un import depuis un csv dans une table


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut Pb de typage de données lors d'un import depuis un csv dans une table
    Bonjour,

    je rencontre le pb suivant : je suis obligé de mettre tous les champs en type texte afin de pouvoir importer mes données alors que certains champs sont des nombre et d'autres des dates.

    Comment puis je faire pour transformer une donne qui est de type teste en autre chose sachant que j'utilise ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With matable
       ![Nb CPU] = aData(14) 'le champ est declaré en numérique
       ![Date] = aData(15) ' le champ est declaré en date
    les aDate sont un split d'une ligne importer via un OpenAsTextStream

    je cherche depuis ce matin sur le forum et je ne trouve rien

    Merci d'avance pour votre aide

    Anax

  2. #2
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 335
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    Salut,

    Tu as essayé avec les fonction de conversion CLng,CInt,CDate...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matable![Date] = CDate(aData(15))
    A+
    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
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    Bonsoir USer

    Merci d'avoir répondu mais je n'arrive pas avec cdate()
    il me dit : erreur execute 13 - incompatibilité de type et pourtant mon champ est bien en Date / heure

    Le texte que j'importe est comme ceci : jj/mm/aaaa hh:mm mais considéré comme du texte

    Merci pour ton aide

    Anax

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 335
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    Salut,

    Pour debugger, mets 1 point d'arrêt juste avant cette instruction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ![Date] = CDate(aData(15)) ' le champ est declaré en date
    et regardes ce que contient aData(15)

    A+
    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
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    Alors voici le code que j'ai ecris suivant ton conseil ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Debug.Print aData(15)
    Stop
    ![Date] = CDate(aData(15))
    Dans la fenetre de debug j'obtiens ceci : 31/08/2004 16:27

    Le champ date dans ma table est bien au format Date/heure general

    Merci encore pour ton aide

    Anax

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    En approfondissant mes recherches, en fait le code se plante quand aData(15) est vide. Puis je faire autrement que de mettre une date bidon?

    C'est la 1ere fois que je me retrouve devant cette situation

    Merci d'avance

    Anax

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If nz(aData(15), "") <> "" then
        ![Date] = CDate(aData(15))
    End if
    Et attention au format de date. Pour 31/08, il n'y aura pas de souci, mais pour 12/08, ça va sans doute poser problème.
    Il faudrait décomposer la date et passer par un dateserial et un timeserial.
    [Access] Les bases du débogage => ici

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    J'essaye de bosser sur vos piste mais mon fichier est vraiment pourri !!!!
    Pour vous donner un petit exple de donnée que j'ai dans cette fameuse colonne date à importer, cela peut etre ces type :
    1) 26/06/2006 16:54:00
    2) Wed May 24 16:56:31 2006
    3) Je peux juste trouver un nombre (exple : 2)
    4) 08/27/09
    5) Thu 08 Oct 2009 12:33:36 PM CEST
    6) Nov 25 2008 22:05

    Je n'ai même pas l'ombre d'une idée pour savoir par ou commencer pour traiter ces cas....

    Etant un pauvre debutant désespéré qui essaye de comprends, peut on me mettre sur la voix d'un code de traitement ?

    Merci bcp pour votre aide

    Anax

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    A part un rejet des lignes dont les données ne respectent pas un certain format, je ne vois pas ce que tu peux faire.
    Par exemple, imposer un format de date DD/MM/YYYY hh:mm:ss et rejeter dans une table les lignes qui ne le respecte pas.
    Vu ce que tu as comme exemple, le 05/12/2010, tu ne sauras pas dire si c'est le 5 dec. ou le 12 mai.
    [Access] Les bases du débogage => ici

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    Merci bcp pour votre aide, je vais faire cela

    C'est vraiment formidable d'avoir des explications pour comprendre et avancer.

    Merci encore

    Anax

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

Discussions similaires

  1. Récuperer les données d'un fichier txt pour les insérer dans une Table
    Par sandokhane dans le forum Bases de données
    Réponses: 47
    Dernier message: 31/05/2014, 15h10
  2. [MySQL] Importation d'un csv dans une base de données.
    Par Hotei dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/04/2010, 20h51
  3. [AC-2000] PB lors de l'import d'un csv dans une base
    Par zandeparis dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/11/2009, 21h02
  4. [AC-2000] gestion des erreurs lors de l'importation d'un CSV dans une table formaté
    Par zandeparis dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/11/2009, 23h45
  5. Réponses: 4
    Dernier message: 01/11/2007, 12h46

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