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 lors de l'import d'un csv dans une base


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 29
    Points : 19
    Points
    19
    Par défaut PB lors de l'import d'un csv dans une base
    bonjour, je vous écris car j'ai un problème lorsque j'importe un fichier csv dans une base. En gros le fichier csv s'importe correctement mais seulement pour certaines lignes ! celles qui bugg sont celles dont les champs contiennent une virgule à l'intérieur de guillemet :

    voila par exemple une ligne de mon csv :

    FT1,116C1,COMPTE LCL,114,"COMPTE LCL 0,25",1990-01-01,1994-12-31

    cette ligne est importé correctement si j'écris COMPTE LCL 0.25 au lieu de "COMPTE LCL 0,25"
    mais voila le probleme c'est que moi j'ai besoin que ce soit ecrit avec une virgule et non un point

    pour mon code j'ai utilisé un TransfertText dans un bouton et ma table de destination est TABLEDEST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.TransferText acImportDelim, "", "TABLEDEST", fOpenFiles(), True, ""
    fopenfiles() est le code pour choisir un csv avec une boite de dialogue

    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
    33
    34
     
    Function fOpenFiles() As String
     
    'Nécessite la référence microsoft office x.x object library
    ' renvoie un string qui récupère l'adress du chemin du fichier csv
     
     
    Dim Dialogue As FileDialog
    Dim Fichier As Variant
    Set Dialogue = FileDialog(msoFileDialogOpen)
     
    With Dialogue
    .AllowMultiSelect = True
    .ButtonName = "Ouvrir"
    .InitialFileName = "*.csv"
    .Filters.Clear
    .Filters.Add "Comma-separated values", "*.csv"
    .InitialView = msoFileDialogViewList
    .Title = "Veuillez sélectionner les fichiers ..."
    If .Show Then
    For Each Fichier In .SelectedItems
    fOpenFiles = fOpenFiles & Fichier & ";"
    Next
    End If
    End With
     
    If Len(fOpenFiles) > 0 Then
     
    fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
    End If
     
    Set Dialogue = Nothing
     
    End Function
    Voila vous savez tout ! je pensais que pour un fichier csv il suffisait de mettre une expression entre guillemet pour que l'expression soit recopié même si elle contient des virgules ?
    pourriez vous m'aidez ?

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Access n'est pas devin.

    Si les spécifications d'import spécifient que le délimiteur est la vrigule alors toutes les virgules seront interprétées comme comme des délimiteurs.

    Il faudrait essayer avec

    0\,25 au lieu de 0,25

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    non ça n'a pas marché

    il y a quelque chose que je n'arrive pas à comprendre je pensais qu'un champ texte en csv est délimité par des guillements alors pouquoi lors de l'importation cette notion n'est pas prise en compte ?

    j'ai essayé de remplacer tout mes virgules par des points virgule et laisser la virgule dans " COMPTE LCL 0,25" mais la l'importation ne se fait pas

    du coup il faut que je définisse une methode d'import qui prend comme séparateur toujours la virgule mais qui ne prenne pas en compte ce qu'il y a à l'intérieur d'une virgule ... c'est pas gagné

    si quelqu' un a deja eu le probleme qu'il n'hésite pas à me montrer sa solution!

    merci pour votre aide

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/11/2010, 22h35
  2. [MySQL] Import de fichiers CSV dans une base de données
    Par damdam00 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/07/2010, 15h05
  3. [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
  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. Amelioration d'une importation d'un CSV dans une base
    Par AngeDéchu dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/04/2008, 09h44

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