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 :

Ouvrir un fichier .csv avec ultraedit en vba [AC-2003]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 27
    Points
    27
    Par défaut Ouvrir un fichier .csv avec ultraedit en vba
    Bonjour,

    j'essaie d'ouvrir un fichier .csv (contenant des données séparées par un ";") avec ultraedit car lorsque je l'ouvre avec excel, il m'ajoute des caractères bizarres à la fin du dernier champs lors que je l'enregistre.

    dim fichier as ? ou autre chose... je ne sais vraiment pas quoi inscrire. Par la suite je devrai supprimer les trois premiers caractères de mon premier champ et enregistrer mon fichier. Pas besoin de lire les lignes suivantes.

    Merci !

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

    Je pense que tes caractères bizarres sont des retours chariots.

    Un fichier CSV est en fait un fichier texte, tu peux l'ouvrir en VBA (il y a tout ce qu'il faut sur la FAQ et les tutos), récupérer les infos, les transformées et les enregistrées dans un autre fichier.

    Philippe

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    Voici les caractères que je retrouve au début de mon premier champs: . Avec excell, je réussis à les supprimer mais lorsque j'enregistre mon fichier, excel va mettre des virgules "," aléatoirement à la fin de certains champs. Ce qui a pour effet de ne pas me permettre de loader mon fichier car il y a un caractères de plus à la fin de mon champs. Ex, j'ai un champs code postal à 6 et la virgule devient le 7ième caractère. Mon champs est maintenant trop grand pour ce que ma bd est capable de recevoir. Je dois éviter de travailler avec excell.

    Lorsque j'ouvre mon fichier csv et que je l'enregistre en format txt, les caractères restent présent même si je ne les vois pas en ouvrant mon fichier avec NotePad. Il faut que j'ouvre mon fichier avec ultra edit pour voir que les caractères sont toujours présents. Ce qui a pour effet de ne pas loader ma première ligne lorque je lance sqlloader. C'est pourquoi je tente de l'ouvrir avec ultra edit. Donc il n'y a rien à faire ?

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Ces trois octets sont la marque d'un fichier UTF-8.
    Si tu l'ouvres avec le bloc-notes et que tu fais Fichier > Enregistrer sous...
    tu verras le codage dans la boîte de dialogue.

    Essaie le codage ANSI pour convertir le fichier, et voir si ça aide.

    A+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    Le but de ma demande est de savoir comment le coder en vba. je le faisais déjà sous excel mais comme expliqué précédemment, ca ne fonctionne pas à cause des virgules ajoutées lors de l'enregistrement. C'est pourquoi je voulais faire appel à ultra edit pour enlever mes trois caractères:

    ce que je fais sous excel:

    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
    Dim champ1 As String
    Dim champ2 As String
     
    'Déclaration de mon fichier .xls de sortie
     
    Dim xlapp As New Excel.Application
    Dim xlfich As Excel.Workbook
     
     
    'Ouverture de mon fichier 0064MRHECHELON.csv
    Set xlfich = xlapp.Workbooks.Open(cheminBaseDonnee & "\0064MRHECHELON.csv")
    Set xlsheet = xlfich.Sheets(1)
     
    champ1 = xlsheet.Cells(1, 1)
     
    'enlève mes 3 caractères
    champ2 = Mid(champ1, 4)
     
    xlsheet.Cells(1, 1) = champ2
     
    xlfich.Save
     
    xlapp.ActiveWorkbook.Saved = True
     
    xlapp.Workbooks.Close

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Ça me paraît risqué d'enlever ces caractères.
    Certains caractères ne pourraient pas être convertis.

    J'ai essayé de coder la seule technique de conversion que je connais.
    Il faut ajouter une référence Visual Basic à la bibliothèque "Microsoft ActiveX Data Objects 2.5 Library" (2.5 ou plus).
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Sub ADO_Stream_ConvCharSet(sFileIn As String, sCSin As String, sCSout As String)
    Dim stmIn As Stream
    Dim stmOut As Stream
    Dim Cnt As Long, p As Long
    Dim sFileOut As String
    Dim sUneLigne As String
     
    sFileOut = sFileIn
    p = InStrRev(sFileIn, ".")
    If p > 1 Then
       sFileIn = Left(sFileIn, p - 1) & ".bak" & Mid(sFileIn, p)
    Else
       sFileIn = sFileIn & ".bak"
    End If
    Name sFileOut As sFileIn
     
    ' Nouvel objet Stream (flux) entrant
    Set stmIn = New Stream
    ' Paramètres sur la source du flux
    stmIn.Type = adTypeText
    stmIn.LineSeparator = adCRLF
    stmIn.Charset = sCSin
    ' Ouvrir le flux
    stmIn.Open
     
    ' Nouvel objet Stream (flux) sortant
    Set stmOut = New ADODB.Stream
    ' Paramètres du flux texte
    stmOut.Type = adTypeText
    stmOut.LineSeparator = adCRLF
    stmOut.Charset = sCSout
    ' Ouvrir le flux
    stmOut.Open
     
    ' Charger le flux entrant à partir d'un fichier
    stmIn.LoadFromFile sFileIn
     
    ' Lire lignes du flux entrant et les copier
    ' dans le flux sortant
    While (Not stmIn.EOS)
        Cnt = Cnt + 1
        sUneLigne = stmIn.ReadText(adReadLine)
        stmOut.WriteText sUneLigne, adWriteLine
    Wend
    ' Sauver le flux sortant dans un fichier
    stmOut.SaveToFile sFileOut, adSaveCreateOverWrite
     
    ' Fermer les flux
    stmIn.Close
    Set stmIn = Nothing
     
    stmOut.Close
    Set stmOut = Nothing
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADO_Stream_ConvCharSet cheminBaseDonnee & "\0064MRHECHELON.csv", "utf-8", "Windows-1252"
    Le fichier 0064MRHECHELON.csv sera renommé 0064MRHECHELON.bak.csv, puis converti dans un nouveau fichier 0064MRHECHELON.csv.

    A+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    WOW !!!

    A première vue, ca me semble très, très, très, très bien... ca c'est du clé en main...

    Merci beaucoup LedzepII...

    C'est très apprécié !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/08/2008, 13h36
  2. Réponses: 1
    Dernier message: 25/08/2008, 11h57
  3. ouvrir un fichier .csv avec windev
    Par law56100 dans le forum WinDev
    Réponses: 1
    Dernier message: 03/07/2008, 16h48
  4. [access 2003] Supprimer un fichier .csv avec du code VBA
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/02/2008, 16h42
  5. Ouvrir un fichier csv avec plus de 65535 lignes
    Par mustang-ffw02 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 09/10/2007, 20h46

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