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

de txt vers xls

4 réponses
Avatar
JVdeBX
Bonsoir,

On m'a transmis un fichier toto.txt.
Il est formé de250 enregistrements de longueur fixe et de 236 caractères
chacun.
Seulement voilà, ces enregistrement sont à la queuleuleu sur une seule ligne
et
bien sûr après l'import, excel me propose aussi une seule ligne et chaque
cellule est pleine
des 300 enregistrements qui la concerne.
Connaissez-vous un moyen de modifier à la base ce .txt pour avoir 300
lignes.
Ou alors dans excel existe t'il un moyen de délimiter UN enregistrement.
Merci à vous.
Cordialement.
JVdeBX

4 réponses

Avatar
Pierre Fauconnier
Bonjour

Tu peux toujours essayer un Données/Convertir/Largeur fixe et placer une
ligne de séparation tous les 236 caractères, puis un copier/coller
transposé. Evidemment, si tu as 300 données ( lignes ), cela pose problème
avec 256 colonnes.
Tu peux aussi adapter la macro suivante, qui découpe une cellule en fonction
d'un nombre de caractères en plaçant chaque tronçon sous la cellule
sélectionnée

Sub EclaterSelection()
Dim Separateur As Integer
Dim i As Integer
Dim Cellule As Range

Set Cellule = Selection(2)
Separateur = 5
For i = Separateur + 1 To Len(Selection) + 1 Step Separateur
Cellule = Mid(Selection, i - Separateur, Separateur)
Set Cellule = Cellule(2)

Next i

End Sub

Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

Sinon,
"JVdeBX" a écrit dans le message de
news:417545cd$0$32557$
Bonsoir,

On m'a transmis un fichier toto.txt.
Il est formé de250 enregistrements de longueur fixe et de 236 caractères
chacun.
Seulement voilà, ces enregistrement sont à la queuleuleu sur une seule
ligne

et
bien sûr après l'import, excel me propose aussi une seule ligne et chaque
cellule est pleine
des 300 enregistrements qui la concerne.
Connaissez-vous un moyen de modifier à la base ce .txt pour avoir 300
lignes.
Ou alors dans excel existe t'il un moyen de délimiter UN enregistrement.
Merci à vous.
Cordialement.
JVdeBX




Avatar
Clément Marcotte
Bonjour,

Comme je n'ai pas de fichier qui correspond au tien, je m'en suis
bricolé un que j'ai réussi à separer en lignes de 239 caractères. Pour
un nombre différent de caractères, remplacer le 239 dans :

laligne = f.Read(239)

Sub enplusieurslignes()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso As Object, f As Object
Dim i As Integer, laligne
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextfile("c:mes documentstoto.txt", ForReading)
i = 1
Do While Not f.AtEndOfStream
laligne = f.Read(239)
Cells(i, 1).Value = laligne
i = i + 1
Loop
End Sub


"JVdeBX" a écrit dans le message
de news:417545cd$0$32557$
Bonsoir,

On m'a transmis un fichier toto.txt.
Il est formé de250 enregistrements de longueur fixe et de 236
caractères

chacun.
Seulement voilà, ces enregistrement sont à la queuleuleu sur une
seule ligne

et
bien sûr après l'import, excel me propose aussi une seule ligne et
chaque

cellule est pleine
des 300 enregistrements qui la concerne.
Connaissez-vous un moyen de modifier à la base ce .txt pour avoir
300

lignes.
Ou alors dans excel existe t'il un moyen de délimiter UN
enregistrement.

Merci à vous.
Cordialement.
JVdeBX




Avatar
JVdeBX
A Clément et à Pierre,

Mais comment, comment vous remercier de votre gentillesse et de votre
promptitude.
Je vous remercie bien sincèrement de vos réponses car vous n'avez pas idée à
quel point elles pouraient me sauver.
Ha, quand on a un grand patron exigeant et que l'on ne connait rien à excel
!!!
Je teste vos solutions demain dès l'aube et je vous tiens au courant.
Tout simplement MERCI.
JVdeBX
Avatar
Bernard
Bonsoir

Bien que la solution de Clément Marcotte fonctionne au poil, je propose
quand même la mienne:
Bernard

------------------------------------------------------------------------------------------

Type MyRecord
varstring As String * 236
End Type


Sub Lire_Mon_Fichier2()


Dim monrec As MyRecord

'open fichier
Open "C:teststest.txt" For Binary Access Read As 1

'lecture du 1er enregistrement
Get #1, , monrec

Range("A1").Select

Do While Not EOF(1)
ActiveCell.Value = monrec.varstring
ActiveCell.Offset(1, 0).Select
Get #1, , monrec
Loop

Close #1
End Sub