butthead6511
Messages postés13Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention 6 avril 2010
-
23 nov. 2006 à 11:21
butthead6511
Messages postés13Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention 6 avril 2010
-
24 nov. 2006 à 15:22
bonjour,
je suis en train d'écrire un prog qui réalise des traitements sur un fichier excel en entrée et produit un fichier .txt.
voici le code de l'écriture dans le txt
Sub CreatFichier(FilePath As String, FileName As String)
Dim MonFichier As String
MonFichier = FilePath & FileName
Open MonFichier For Output As #1
Dim i As Integer
Dim row As String
For i = 1 To UBound(tabFinal_sal)
row = tabFinal_sal(i, 1) & ";" & tabFinal_sal(i, 2) & ";" & tabFinal_sal(i, 3) & ";" & tabFinal_sal(i, 4) & ";" & tabFinal_sal(i, 5)
row = Replace(row, " ", "")
Print #1, row
Next
Close #1
End Sub
Le problème est que j'ai un retour chariot à la fin de mon fichier ce que je ne veux pas !.
Existe-t-il une fonction pour écrire une ligne sans retour chariot ? et une pour faire seulement un retour chariot ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 nov. 2006 à 11:28
Salut
Donc tu voudrais que toutes les lignes aient un retour chariot, sauf la dernière ?
A mon avis, c'est un faux problème.
Explique nous plutôt pourquoi le dernier saut de ligne est un problème.
Sinon, regarde du côté de l'instruction (obsolète) Write #, mais tu découvriras un autre problème, les "
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
butthead6511
Messages postés13Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention 6 avril 2010 23 nov. 2006 à 11:51
Il ne faut pas de retour ligne à la fin du fichier car c'est un fichier qui est utilisé par SAP.
En fait, je suis en train d'automatiser une transformation d'un fichier .xls en .txt, chose qui se fait actuellement à la main. Le fichier txt que je dois produire doit avoir la même structure qu le fichier fait à la main, sans retour chariot à la fin.
butthead6511
Messages postés13Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention 6 avril 2010 24 nov. 2006 à 09:04
Merci Gobillot ! c'est exactement ce que je voulais ! ça marche nikel !
mon code pour info:
Sub CreatFichier(FilePath As String, FileName As String)
nbLignesTotales = 0
Dim MonFichier As String
MonFichier = FilePath & FileName
Open MonFichier For Output As #1
Dim i As Integer
Dim row As String
' ajout de sal dans le fichier .txt
For i = 1 To UBound(tabFinal_sal)
row = tabFinal_sal(i, 1) & ";" & tabFinal_sal(i, 2) & ";" & tabFinal_sal(i, 3) & ";" & tabFinal_sal(i, 4) & ";" & tabFinal_sal(i, 5)
row = Replace(row, " ", "")
Print #1, row
nbLignesTotales = nbLignesTotales + 1
Next
' ajout de av dans le fichier .txt
For i = 1 To UBound(tabFinal_av)
row = tabFinal_av(i, 1) & ";" & tabFinal_av(i, 2) & ";" & tabFinal_av(i, 3) & ";" & tabFinal_av(i, 4) & ";" & tabFinal_av(i, 5)
row = Replace(row, " ", "")
nbLignesTotales = nbLignesTotales + 1
If i = UBound(tabFinal_av) Then
Print #1, row; ' le ";" ne fait pas de retour à la ligne (pour la fin du fichier)
Else
Print #1, row
End If
Next
Close #1
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 24 nov. 2006 à 13:48
salut,
çà peut tout de même être allégé.
tous ces replace sont gourmands pour rien
Sub CreatFichier(FilePath As String, FileName As String)
Dim i%, Rows$
Rows = vbNullString
'
ajout de sal
For i = 1 To UBound(tabFinal_sal)
Rows = Rows & tabFinal_sal(i, 1) & ";" & tabFinal_sal(i, 2) & ";" & tabFinal_sal(i, 3) & ";" & tabFinal_sal(i, 4) & ";" & tabFinal_sal(i, 5) & vbCrLf
Next i
' ajout de av
For i = 1 To UBound(tabFinal_av)
Rows = Rows & tabFinal_av(i, 1) & ";" & tabFinal_av(i, 2) & ";" & tabFinal_av(i, 3) & ";" & tabFinal_av(i, 4) & ";" & tabFinal_av(i, 5) & vbCrLf
Next
' nettoie la
chaîne
Rows = Replace(Rows, " ", vbNullString)
Rows = LeftB$(Rows, LenB(Rows) - 4)
' sauve
Open FilePath & FileName For Output As
#1
Print #1, Rows; '
le ";" ne fait pas de retour à la ligne (pour la fin du
fichier)
Close #1
End Sub