écriture dans un fichier

Résolu
butthead6511 Messages postés 13 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 6 avril 2010 - 23 nov. 2006 à 11:21
butthead6511 Messages postés 13 Date d'inscription vendredi 22 août 2003 Statut Membre Derniè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 ?

merci

10 réponses

butthead6511 Messages postés 13 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 6 avril 2010
24 nov. 2006 à 15:22
ok merci, c'est vrai que c'est un peu mieux, mais en même temps j'ai pas énormément de lignes dans mes fichiers, mais je prends quand même! ^^
@+
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
butthead6511 Messages postés 13 Date d'inscription vendredi 22 août 2003 Statut Membre Derniè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.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 nov. 2006 à 19:16
Salut,

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, " ", "")         If i UBound(tabFinal_sal) then row Replace(row, "vbCrLf", "")
        Print #1, row
    Next

Peut-être une bidouille encore à faire mais en gros, c'est ça.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2006 à 20:28
salut,
tu auras forcément un retour chariot en fin, Print #1 oblige un retour à chaque nouvelle ligne

pas le choix.
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 nov. 2006 à 22:52
ben si un point virgule derrière supprime le retour chariot:

Print #1, row;

et Print tout seul pour avoir un retour chariot seulement:
Print #1,

Daniel
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 nov. 2006 à 23:44
Pas bête Gobillot, pas bête !
0
butthead6511 Messages postés 13 Date d'inscription vendredi 22 août 2003 Statut Membre Derniè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



End Sub

@+
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

<small>Coloration
syntaxique automatique [AFCK] </small>
       
++
PCPT  [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2006 à 13:50
Next 
i
0
Rejoignez-nous