Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ecrire dans fichier plat

2 réponses
Avatar
jask
Bonjour,
J'ai parcouru les news =E0 la recherche d'une solution simple et je ne
suis pas tomb=E9 dessus.
Mon besoin est le suivant :

Parcours d'une plage de cellules :
FOR i=3D1 To 500
WITH Worksheets(1)
vValeur=3D.Cells(i,1).Value
'Ecriture dans fichier plat
Open "C:\TEST.txt" FOR Append AS #1
PRINT #1 vValeur; .Cells(i,2).Value;
Close #1
END WITH
NEXT i

Le but est le suivant :
1. Parcours d'une plage de 500 lignes
2. Si cellule est non vide =A6 =E9criture dans fichier plat d'une cellule,
puis d'une autre cellule. Le tout s=E9par=E9 par des points virgules

Probl=E8me :
Quelles instructions utiliser pour =E9crire dans un fichier plat la
suite des valeurs souhait=E9es (vColonne1;vColonne2;vColonne3) ?
Comment faire un retour chariot afin d'indiquer que cela concerne une
nouvelle ligne et non la suite ?

Merci beaucoup de votre aide
jask

2 réponses

Avatar
Daniel.C
Bonjour.
Tu n'écris que la première cellule de chaque ligne, donc pas besoin de
séparateur ?

With Worksheets(1)
Open "e:donneesdanielmpferesultp.txt" For Append As #1
For i = 1 To 500
If .Cells(i, 1).Value <> "" Then
vValeur = .Cells(i, 1).Value
'Ecriture dans fichier plat
Print #1, vValeur
End If
Next i
Close #1
End With

Cordialement.
Daniel
"jask" a écrit dans le message de news:

Bonjour,
J'ai parcouru les news à la recherche d'une solution simple et je ne
suis pas tombé dessus.
Mon besoin est le suivant :

Parcours d'une plage de cellules :
FOR i=1 To 500
WITH Worksheets(1)
vValeur=.Cells(i,1).Value
'Ecriture dans fichier plat
Open "C:TEST.txt" FOR Append AS #1
PRINT #1 vValeur; .Cells(i,2).Value;
Close #1
END WITH
NEXT i

Le but est le suivant :
1. Parcours d'une plage de 500 lignes
2. Si cellule est non vide ¦ écriture dans fichier plat d'une cellule,
puis d'une autre cellule. Le tout séparé par des points virgules

Problème :
Quelles instructions utiliser pour écrire dans un fichier plat la
suite des valeurs souhaitées (vColonne1;vColonne2;vColonne3) ?
Comment faire un retour chariot afin d'indiquer que cela concerne une
nouvelle ligne et non la suite ?

Merci beaucoup de votre aide
jask
Avatar
PMO
Bonjour,

Une piste avec le code ci-dessous.

Sélectionnez la plage à traiter avant de lancer
la macro "EcrireFichierPlat"

'*************
Sub EcrireFichierPlat()
Dim var
Dim T$()
Dim i&
Dim j&
Dim k&
Dim A$
Dim canal&
If TypeName(Selection) <> "Range" Then
MsgBox "La sélection ne correspond pas à une plage"
Exit Sub
End If
If Selection.Rows.Count = 1 And _
Selection.Columns.Count = 1 Then
MsgBox "La sélection ne contient qu'une seule cellule"
Exit Sub
End If
var = Selection
For i& = 1 To UBound(var, 1)
A$ = ""
For j& = 1 To UBound(var, 2)
If var(i&, j&) <> "" Then A$ = A$ & var(i&, j&) & ";"
Next j&
If A$ <> "" Then
k& = k& + 1
ReDim Preserve T$(1 To k&)
T$(k&) = Mid(A$, 1, Len(A$) - 1)
End If
Next i&
If k& = 0 Then
MsgBox "La sélection ne contient aucune donnée"
Exit Sub
End If
canal& = FreeFile
Open "C:TEST.txt" For Append As #canal&
For i& = 1 To UBound(T$)
Print #canal&, T$(i&)
Next i&
Close #1
End Sub
'*************

Cordialement.

PMO
Patrick Morange