écriture dans un fichier [Résolu]

Signaler
Messages postés
13
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
6 avril 2010
-
Messages postés
13
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
6 avril 2010
-
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

Messages postés
13
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
6 avril 2010

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! ^^
@+
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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)
Messages postés
13
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
6 avril 2010

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.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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>
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Pas bête Gobillot, pas bête !
Messages postés
13
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
6 avril 2010

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

@+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
Next 
i