Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/08/2011, 16h45   #1
Candidat au titre de Membre du Club
 
Homme Martin Couture
Inscription : octobre 2005
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Martin Couture
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 24
Points : 13
Points : 13
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 !
gontrand16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 06h14   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 618
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 618
Points : 30 958
Points : 30 958
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 14h53   #3
Candidat au titre de Membre du Club
 
Homme Martin Couture
Inscription : octobre 2005
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Martin Couture
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 24
Points : 13
Points : 13
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 ?
gontrand16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 17h03   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
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 : 3 939
Points : 6 278
Points : 6 278
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+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 17h22   #5
Candidat au titre de Membre du Club
 
Homme Martin Couture
Inscription : octobre 2005
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Martin Couture
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 24
Points : 13
Points : 13
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 :
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
gontrand16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 19h13   #6
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
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 : 3 939
Points : 6 278
Points : 6 278
Ç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 :
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 :
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+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/08/2011, 19h54   #7
Candidat au titre de Membre du Club
 
Homme Martin Couture
Inscription : octobre 2005
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Martin Couture
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 24
Points : 13
Points : 13
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é !
gontrand16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h02.


 
 
 
 
Partenaires

Hébergement Web