Recupérer un fichier .TXT

Saphir

XLDnaute Nouveau
Bonjour à tous
J'ai un fichier TXT (non crypté), windev 5.5, mais je n'ai pas windev ni le bon ODBC (hyperfile il me semble), ni les fichiers d'analyse... je peux sûrement retrouver la structure du fichier sur un document papier

Je peut me débrouiller si j'arrive à le découper tout les 180 caractères (le RC n'est pas reconnu, les séparateurs de champs non, plus...)
Dans mes souvenirs... c'est un fichier random mais bon mes compétences s'arrêtent là.
Pouver vous m'aidez SVP
Merci
 

Gael

XLDnaute Barbatruc
Re : Recupérer un fichier .TXT

Bonsoir Saphir,

Et si tu nous joignais un exemple du fichier TXT.

Sinon, il est quelquefois plus simple de l'ouvrir sous Word, de recréer les séparateurs avec les fonctions "Rechercher/remplacer" qui sont plus évoluées que celles d'Excel puis une fois le fichier OK, le sauvegarder en format texte (.TXT) et le rouvrir dans Excel.

@+

Gael
 

Saphir

XLDnaute Nouveau
Re : Recupérer un fichier .TXT

Merci Gaël
Mais le fichier est vraiment pourri, les séparateurs sont, me semble t'il que des codes Ascii jamais identiques, seul le bloc note ou un autre editeur "primitif" me permet de voir les enregistrements.
Ce qu'il me faut, c'est le moyen d'ouvrir le fichier comme si c'était une structure fixe un enregistrement fait 180 caractères (surement un OPEN RANDOM... j'ai oublié mon basic)

Si je récupère une ligne par enregistement, le reste ne me fait pas peur.
@+
Saphir
 

jp14

XLDnaute Barbatruc
Re : Recupérer un fichier .TXT

Bonsoir

En utilisant la macro suivante on récupère dans la variable s l'intégralité du fichier
( Voir Aide VBA)
Code:
Sub transform()
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    'fs.CreateTextFile "test1.txt"      'Crée un fichier
    Set f = fs.GetFile(fileToOpen)
   
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    's = ts.ReadLine
    s = ts.ReadAll
    ts.Close
    
    

End Sub

Ensuite en utilisant la fonction MID on peut écrire les données dans des cellules.

A tester

JP
 

MichelXld

XLDnaute Barbatruc
Re : Recupérer un fichier .TXT

bonjour


Sur une base de 180 octects par enregistrement, tu peux tester

Code:
Dim lngPosistion As Long
Dim strLine As String

Open "C:\Documents and Settings\mimi\test.txt" For Binary As #1
    Do While lngPosistion < LOF(1)
        strLine = Input(180, #1)
        lngPosistion = Loc(1)
        Debug.Print strLine
    Loop
Close #1


bonne journée
michel
Microsoft Excel MVP
 

Saphir

XLDnaute Nouveau
Re : Recupérer un fichier .TXT

Bonjour,

Merci Michel, c'est exactement ce que je voulais... J'avais vraiment oublié mes gammes en Basic.

C'est quoi le "LOF" par opposition au "EOF" (je pense que je peut trouver le Nombre d'enregistrement dans l'entête du fichier) ? Actuellement, Il faut "breaker" la macro pour arreter...


J'ai plus "qu'à recupérer dans excel", là, j'ai fait un copier coller depuis le "debug".

Encore Merci
@+
Saphir
 

Statistiques des forums

Discussions
312 836
Messages
2 092 656
Membres
105 479
dernier inscrit
chaussadas.renaud