cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 2015
-
10 avril 2006 à 14:01
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 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