Probleme de séparateur: TXT vers XLS

cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 10 avril 2006 à 14:01
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 11 avril 2006 à 15:19
bonjour
j'ai un fichier texte avec 4 colonnes ,que je veut convertir en fichier excel,avec se code que j'ai repris d'une source dont je me souviens plus l'auteur (que je remercie).Il fait bien la convertion,mais dans mon fichier excel il m'affiche les 4 colonnes dans une seule,auriez vous une idée ,je crois que ça viens du séparateur mais je ne voit pas ou.
Private Function EcritClasseurXL() As Boolean
'--------------------------------------'
'--- ECRITURE DU CLASSEUR EXCEL ---'
'--------------------------------------'
On Error GoTo Err_EcritExcel
' Dim appExcel As Excel.Application
' Dim tmpWorkbook As Excel.Workbook
' Dim tmpSheet As Excel.Worksheet
Dim appExcel
Dim tmpWorkbook
Dim tmpSheet

Dim NumFeuille As Integer, NumChamp As Integer

Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = False
appExcel.DisplayAlerts = False
'--- en fonction du paramètre d'entrée, on crée ou modifie un classeur excel
If OverWriteDest = True Then
'--- on crée un classeur excel en supprimant l'ancien
Call EtatClasse("Création du classeur Excel", 1)
Set tmpWorkbook = appExcel.Workbooks.Add
tmpWorkbook.SaveAs (PathFile_Dest)
Else
'--- on modifie un classeur excel . Les feuilles du même nom que celles à créer seront supprimées
Call EtatClasse("Ouverture du classeur Excel", 1)
Set tmpWorkbook = appExcel.Workbooks.Open(PathFile_Dest)
End If
'--- on a le TableauSource ki est remplit.
For NumFeuille = 0 To UBound(TableauSrc)
On Error Resume Next
Set tmpSheet = tmpWorkbook.Worksheets(TableauSrc(NumFeuille)(0))
If Err <> 0 Then
Call EtatClasse("Création de la feuille '" & TableauSrc(NumFeuille)(0) & "'", 1)
'--- ajouteune feuille
Set tmpSheet = tmpWorkbook.Worksheets.Add()
'--- attribue le nom de la table
tmpSheet.Name = TableauSrc(NumFeuille)(0)
Else
'--- on supprime pas la feuille, mais on vide les cellules
tmpSheet.Cells.ClearContents
End If
On Error GoTo Err_EcritExcel


If FirstLigneAsChamps = True Then
'--- sur la première ligne, on écrit les nom des champs
For NumChamp = 0 To UBound(TableauSrc(NumFeuille)(1))
' DoEvents
tmpSheet.Cells(1, NumChamp + 1) = TableauSrc(NumFeuille)(1)(NumChamp)
'--- allez, petit effet : on met les noms des champs en gras :) voir les attributs de ".Font" pr le reste (souligné, couleur, couleur de fond, etc ...)
tmpSheet.Cells(1, NumChamp + 1).Font.Bold = True
Next
End If
Dim tmpContenu
Call EtatClasse("Ecriture des données dans '" & TableauSrc(NumFeuille)(0) & "'", 1)
tmpContenu = TableauSrc(NumFeuille)(2)
'--- on remplace le caractère de séparation des champs (FieldSeparator) par des tabulations...
tmpContenu = Replace(tmpContenu, FieldSeparator, vbTab)
'--- , et on copie tt ça ds le presse papier
Clipboard.Clear
'--- vbCFText, c pr préciser ke c du texte.
Clipboard.SetText tmpContenu, vbCFText
'--- on colle dans la première cellule d'excel ki , comme un grand sait que
'--- 'vbTab' c pour passer à la cellule suivante
'--- 'vbCrlf', c pr passer à la ligne suivante !!sympa excel !
If tmpSheet.Range("A1").Value = "" Then
tmpSheet.Paste tmpSheet.Range("A1")
Else
tmpSheet.Paste tmpSheet.Range("A2")
End If
Clipboard.Clear
'--- auto fit c pr redimensionner ttes les colonnes à la taille du contenu.
tmpSheet.Columns.AutoFit
Set tmpSheet = Nothing
Next
tmpWorkbook.Save
Call EtatClasse("Sauvegarde du classeur Excel ", 1)
EcritClasseurXL = True
Exit_EcritClasseurXL:
On Error Resume Next
tmpWorkbook.Close
Set tmpWorkbook = Nothing
appExcel.Quit
Set appExcel = Nothing
Exit Function
Err_EcritExcel:
If Err.Number = 70 Then
'--- permission refusée, le fichier doit être déjà ouvert
Call AlerteClasse("ECRITURE CLASSEUR EXCEL", "Erreur :" & Err.Number & vbCrLf & Err.Description & vbCrLf & vbCrLf & "Si le fichier est déjà ouvert, fermez-le et relancez la conversion")
EcritClasseurXL = False
GoTo Exit_EcritClasseurXL
Else
Call AlerteClasse("ECRITURE CLASSEUR EXCEL", "Erreur :" & Err.Number & vbCrLf & Err.Description)
EcritClasseurXL = False
GoTo Exit_EcritClasseurXL
End If
End Function
Merci
@plus
petchy

4 réponses

aurelien2723 Messages postés 181 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 26 janvier 2011 1
10 avril 2006 à 14:08
Utilise la fonction OpenText de la même classe

appExcel.Workbooks.Open(PathFile_Dest)

par appExcel.Workbooks.OpenText(PathFile_Dest)

Tu as un argument avec lequel tu spécifies ton type de séparateur ;)
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
10 avril 2006 à 14:20
salut Aurélien
voila j'ai retrouvé le prog dont j'ai utilisé le code
http://www.codes-sources.com/code.aspx?ID=32114
si tu peut jeté un oeil
petchy
0
dthuler Messages postés 121 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 29 avril 2009
11 avril 2006 à 00:45
Salut,
C'est peut-être moi qui ne vois pas bien mais où définis-tu "FieldSeparator" dans ton appli ?

~~ Brainiax ~~ [8D]
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
11 avril 2006 à 15:19
salut
en fait FieldSeparator est défini un peu partout,mais je ne vois pas trop comment il est fait,aurais tu une idée comment le définir
merci
petchy
0
Rejoignez-nous