Traiter une fichier .txt de plus de 65536 lignes !!!!

jarc76

XLDnaute Nouveau
Bonjour à tous,

quelles seraient les instructions vba pour :
- Ouvrir un fichier texte
- Lire chacune de ses lignes une a une
- copier chacune des ses lignes dans une feuille excel....


J'ajoute que le fichier .txt fait plus de 65536 lignes, ce qui fait que quand je l'ouvre directement avec excel , l'affichage, limité à ces fameuse 65536 lignes est tronqué, et je perds bcp de données ...

L'idée serait de copier les lignes unes à une ds une feuille excel, et de changer de feuille qd j'atteint le seuil des 65536 lignes ....
Ou bien , si le traitement est trop long, la deuxième idée serait de copier directement par paquet de 65536 lignes ...

Merci de votre aide ....

Cordialement
 

roro69

XLDnaute Impliqué
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

Bonjour essaye ce code:
Sub Extraire()
Dim Repertoire As String, Fichier As String
Dim strFullName As Variant
Dim Cn As Object, Rs As Object

'Sélection du ficher
strFullName = Application.GetOpenFilename("Fichiers textes (*.txt),*.txt", , _
"Sélectionnez un fichier :")

'On sort si aucun fichier n'est sélectionné
If strFullName = False Then Exit Sub

Application.ScreenUpdating = False
Fichier = Dir(strFullName)
Repertoire = Left(strFullName, Len(strFullName) - (Len(Fichier) + 1))


'Connection
Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & ";" & _
"Extended Properties=""text;HDR=Yes;FMT=Delimited"""

'Requete
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM [" & Fichier & "]", Cn, 3, 1, 1

'boucle sur le résultat de la requete
While Not Rs.EOF
'Ajout Feuille
Worksheets.Add
'Ecriture des données dans la feuille
'65536 spécifie le nombre de lignes par feuille(à toi de choisir le nombre)
ActiveSheet.Range("A1").CopyFromRecordset Rs, 65536
Wend

Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing
Application.ScreenUpdating = True
End Sub
A++
 

Base_ile

XLDnaute Nouveau
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

bonjour,

ci joint un bout de code de lecture sequentiele de fichier ... qui concatène tous les caractères d'un fichier dans une seule et meme variable...

path = 'ici le chemin du fichier
nomfich = 'ici le nom du fichier

lig = 1
col = 1

Open path & nomfich For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
toto = TextLine
cells(lig,col) = toto
lig = lig + 1

if lig = 65535 then
lig = 1
col = col +1
end if
Loop
Close #1 ' Ferme le fichier.


' ici ton fichier peux contenir 256 (colonnes) * 65535 (lignes) de données ... si tu depasses encore tu peux imaginer de répartir sur plusieurs feuilles de calcul

En espèrant avoir été utile

Cordialement

Base Ile


PS je n'ai pas tester le code mais j'utilise le bout de macro suivant pour concatener tous les catractères d'un fichier ...

Open path & nomfich For Input As #1
Do While Not EOF(1)
Line Input #1, TextLine
fich = fich & TextLine
Loop
Close #1 ' Ferme le fichier.
 

jarc76

XLDnaute Nouveau
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

Bonjour, et merci à tous pour vos réponses ......

Bon, j'ai testé la solution de roro69 : ca marche plutot bien : excel créé autant de feuille de 65536 lignes qu'il en faut ...

Malheureusement, lors de la copie, du fichier txt vers la feuille excel, j'ai des trucs bizarres qui se passent : toutes les virgules (,) se transforme en séparateur de tabulation et du coup, tout se mélange ....
DE plus , les tabulations sont dorénavant représentées par des petits carrés
Et enfin : la toute premiere ligne a disparu !!!!

Bref, la mise en forme n'est pas correcte !!!!


Voici la visualisation avec Wordpad

Date vanne TEMPERATURE HUILE STAT HYDRAU 146T 1ère PRESSE.Brute (degC) TEMPERATURE HUILE STAT HYDRAU 146T 1ère PRESSE.Brute (degC) PRESSION REFOULEMENT POMPE 146T.Brute (BAR) DEBIT REFOULEMENT POMPE 146T.Brute (l/mn)
09/02/2010 13:00:16 69,771
09/02/2010 13:00:17 25,785 49,792 69,771
09/02/2010 13:00:20 25,785 49,792 69,771 261,32

Voici ce que j'obtiens sour excel après extraction
"09/02/2010 13:00:16 69" "771 "
"09/02/2010 13:00:17 25" "785 49" "792 69" "771 "
"09/02/2010 13:00:20 25" "785 49" "792 69" "771 261" "32 "

en réalité, les " que vous pouvez voir sont sous la forme de carré sous excel ...


Pour les courageux , vous pouvez recuperer mon fichier de base ici : fichier txt


Merci de votre aide...

cordialement
 

jarc76

XLDnaute Nouveau
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

Cool !!!! Merci ,

ca, ca marche bien ....

par contre , pour le format des cellules, je cherche, je cherche......
mais je trouve rien ......

Quelqu'un aurait-il une idée ou un chemin a suivre ????

Merci bien
 

roro69

XLDnaute Impliqué
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

Bonjour ESSAYE CECI
Option Explicit

Sub ImportLargeFile()
Dim strFilePath As String, strFilename As String, vFullPath As Variant
Dim lngCounter As Long
Dim oConn As Object, oRS As Object, oFSObj As Object

vFullPath = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Fichier...")

If vFullPath = False Then Exit Sub
Application.ScreenUpdating = False

Set oFSObj = CreateObject("Scripting.FileSystemObject")
strFilePath = oFSObj.GetFile(vFullPath).ParentFolder.Path
strFilename = oFSObj.GetFile(vFullPath).Name

Set oConn = CreateObject("ADODB.CONNECTION")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strFilePath & ";" & _
"Extended Properties=""text;HDR=No;FMT=Delimited"""

Set oRS = CreateObject("AdoDb.Recordset")

oRS.Open "SELECT * FROM " & strFilename, oConn, 3, 1, 1
While Not oRS.EOF
Sheets.Add
ActiveSheet.Range("A1").CopyFromRecordset oRS, 65536
Wend
oRS.Close
oConn.Close
Application.ScreenUpdating = True
End Sub
A++
 

jarc76

XLDnaute Nouveau
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

MErci ,

ca marche très bien mais les formats sont toujours laborieux ...

Enfin ,j'ai trouvé une bidouille pour m'en depetrer , c'est plus long mais bon, au final ca fonctionne !!!!
je concatene les cellules d'une meme ligne sous vba, et puis je lance une macro de conversion (données, convertir)...et je recupere un format adequat !!!

c'est laborieux mais seul le resultat compte ...

en tout cas merci bcp a toi, roro69, car ton aide m'a été extrèmement précieuse ...
 

brigadero

XLDnaute Junior
Re : Traiter une fichier .txt de plus de 65536 lignes !!!!

Bonjour,

Je met permets de relancer cette discussion car j'ai besoin d'extraire également mes données d'un fichier text (nommé fout) vers excel.
Ce fichier a tout d'abord un horaire pour des valeurs en binaires.

Lorsque je choisis mon fichier text pour charger les valeurs dans excel cela fonctionne, cependant tout se met dans la même case "A".

Or je voudrais qu'il y'ait une valeur par case, comme mis dans l'exemple du fichier classeur 5. (heure dans la 1ere, minute 2e, seconde 3e, autre valeur, premier chiffre binaire, deuxieme...)

j'espere avoir été claire.

merci d'avance pour votre aide.
 

Pièces jointes

  • Extraction .text vers excel.zip
    25 KB · Affichages: 74
  • Extraction .text vers excel.zip
    25 KB · Affichages: 76
  • Extraction .text vers excel.zip
    25 KB · Affichages: 86

Discussions similaires

Statistiques des forums

Discussions
312 249
Messages
2 086 599
Membres
103 256
dernier inscrit
Melomaniak