fichier texte non délimité

mutzik

XLDnaute Barbatruc
Bonjour à toutes et tous,

comment récupérer des infos dans un fichier texte non délimité, sachant quand même que chaque groupe d'infos fait 128 octets, mais les données sont à la suite les unes des autres

Merci à vous
 

dixit

XLDnaute Impliqué
Re : fichier texte non délimité

bonjour,
à la suite les unes des autres c'est-à-dire sans aucun retour à la ligne donc au kilomètre ?
en macro c'est certainement faisable sans difficulté mais je dois m'absenter.
à suivre
 

mutzik

XLDnaute Barbatruc
Re : fichier texte non délimité

Re,

Voici un petit fichier exemple, sachant que le fichier complet compte plusieurs 10ne de milliers d'infos

Merci
 

Pièces jointes

  • test.zip
    246 bytes · Affichages: 49
  • test.zip
    246 bytes · Affichages: 53
  • test.zip
    246 bytes · Affichages: 48

Gruick

XLDnaute Accro
Re : fichier texte non délimité

Bonjour Mutzik,
essaie ce petit code, chez moi ça marche
Code:
Sub ImportMutzik()
' ImportMutzik Macro
' Macro enregistrée le 05/07/2007 par Gruick
' Touche de raccourci du clavier: Ctrl+i
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Documents and Settings\Administrateur\Bureau\test.txt", Destination _
        :=Range("A1"))
        .Name = "test"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With
    Do Until Range("F1") = ""
    Range("F1:J1").Copy
    Range("A65536").End(xlUp)(2).Select
    ActiveSheet.Paste
    Range("F1:J1").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Loop
End Sub

C'est une macro que j'ai faite selon la méthode d'enregistrement auto.
Tu prend une feuille excel vierge, tu fais données externes, importer le fichier texte, texte délimité par l'espace et hop. tu obtiens une grosse ligne.
Après il ne reste qu'à saucissonner par groupe de 5 cellules et les remettre les unes après les autres, jusqu'à la première cellule vide.

J'aurais aimé un fichier plus maousse que 2 lignes pour tester tout ça.

Sans rapport : qu'as-tu pensé de ma carte de France ?

Gruick
 

MichelXld

XLDnaute Barbatruc
Re : fichier texte non délimité

bonjour

Sur une base de 128 octects par groupe, 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(128, #1)
        lngPosistion = Loc(1)
        Debug.Print strLine
    Loop
Close #1


Bon après midi
MichelXld
 

mutzik

XLDnaute Barbatruc
Re : fichier texte non délimité

Bonjour les amis,

je savais bien que vous sauriez me faire ça,

michel c'est impec, je vais faire tourner ma macro toute la nuit (après quelques modifs pour générer les feuilles qui vont bien ainsi que les workbook en fonction d'un paramètre bien précis (rien à voir avec le fichier que je vous ai donné en exemple)

Gruick, j'ai pas encore testé, mais demain, c'est sur.
Quant à la carte de France et des autres pays, je suis en train (mais c'est très long) de faire qq chose de plus mahousse, tu verras sous peu, je te tiens au courant (comme dirait ampère)

merci à vous deux
Bertrand
 

MJ13

XLDnaute Barbatruc
Re : fichier texte non délimité

Bonjour à tous

Bravo Michel c'est très intéressant comme démarche.
Cela donnerait ceci en reprenant ton code pour l'exemple test.txt

Sub lancetxt()
Dim lngPosistion As Long
Dim strLine As String
' Stop
Open "C:\chemin\test.txt" For Binary As #1
Do While lngPosistion < LOF(1)
strLine = Input(128, #1)
lngPosistion = Loc(1)
Debug.Print strLine
nl = ActiveCell.Rows.Row
ActiveSheet.Range("A" & nl).Value = strLine
ActiveCell.Offset(1, 0).Range("A1").Select

Loop
' Stop
Close #1
End Sub

Ensuite il suffit de convertir avec séparateur espace pour avoir une Base de données en colonne.
 

Gruick

XLDnaute Accro
Re : fichier texte non délimité

Re,
Purée, j'ai encore des choses à apprendre,
Loc(1) ? LOF(1) ? Close #1 ? Quoi-t-est-ce ?
Bref, une astuce par ligne.
Mais je ne suis qu'un amateur autodidacte et je vénère respectueusement mes maîtres. Si vous voulez bien m'expliquer...
Mon humble macro pas très pro marche néanmoins avec l'exemple donné, donc je reprends confiance.
Merci pour ces "perles".
Gruick
 

MichelXld

XLDnaute Barbatruc
Re : fichier texte non délimité

bonsoir


Ci joint la macro commentée

Code:
 'Ouvre le fichier en mode binaire
Open "C:\Documents and Settings\mimi\test.txt" For Binary As #1

    'Boucle sur le fichier:
    'LOF indique la taille (en octets) du fichier ouvert
    Do While lngPosistion < LOF(1)
        'Lit la chaîne sur 128 octets
        strLine = Input(128, #1)
        'récupère la position du dernier octet pour la portion lue
        lngPosistion = Loc(1)
        'affiche le résultat dans la fenêtre d'exécution (Ctrl+G)
        Debug.Print strLine
    Loop
'Ferme le fichier
Close #1



Bonne soirée
MichelXld
 

dixit

XLDnaute Impliqué
Re : fichier texte non délimité

bonsoir à tous,
j'arrive un peu tard car les tests ont été longs mais puisque c'est fait, voici une proposition
lire la feuil1 et les commentaires dans la macro
[edit : le traitement était un peu compliqué à cause des 2 derniers octets du fichier txt qui sont des caractère spéciaux donc le fichier joint a été supprimé ; voir post suivant]
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 947
Membres
104 705
dernier inscrit
Mike72