ouvrir un fichier de + de 35536 lignes

M

malika

Guest
Bonjour a tous,

J'aurais aimé savoir si quelqu'un d'entre vous à deja réussi a ouvrir un fichier txt de plus de 35536 lignes ? afin d'avoir toutes les données meme sur plusieurs feuilles si il faut....

Merci d'avance

Malika
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Malika, Gael, Ândré, le Forum

J'avais vu ce fil interressant Gael, ainsi que la Macro de MS, qui en prime n'est pas vraiment dans les règles de l'art d'ailleurs sur 500,000 lignes on risque de faire tourner la bécanne toute la nuit avec tous ces Selects (arf lol)

Une autre solution si tu as Access c'est d'ouvrir ton TXT à travers Access (Par fichier Ouvrir et choisir Format TXT, CSV, TAB ASC, ou, depuis une MDB existante, faire 'Get External Data' => 'Import')

Ensuite tu peux facilement copier ta Table avec le Click Droit de Souris autant de fois que tu as 65536 lignes et ensuite supprimer les enregistrements en trop...

Une fois tes Tables aux mesures compatibles Excel il suffit de faire Fichier Export au Format XLS en ayant séléctionné la Table au préalable...

Bien sûr il y a quelques manips amais ce n'est pas si long que ça en fait, je viens de le faire pour tester.

En cas d'une tâche récurrante, on pourrait envisage de faire faire ce Travail d'Access par Programmation.

Bonne Soirée
[ol]@+Thierry[/ol] J - 8 !!!
 
M

malika

Guest
Merci a tous pour votre aide

Pour ma part j'ai essayé la solution de Gael, avec la macro MS. Comme je n'avais que 150 000 ligne, ça ne m'a pas pris trop de temps mais c'est vrai que si on a plusieurs centaine de millier, la ça peut faire tourné une bonne nuit.

Encore merci et a bientot sur ce beau site B)
 

Gael

XLDnaute Barbatruc
Bonsoir Thierry, rebonsoir à tous,

En fait je suis très content de savoir que cette macro fonctionne (ce qui est quand même la première qualité d'un programme informatique) car d'habitude j'essaye un produit avant de recommander son utilisation.

Je ne manquerai pas de signaler à Microsoft leur manque de rigueur dans la programmation avec copie à Bill pour info.

Ceci étant, elle ne me paraît pas très compliquée et pourquoi ne pas la relooker un peu pour en faire un petit utilitaire XLD car cette question est déjà revenue plusieurs fois?

@+

Gael
 

Staple1600

XLDnaute Barbatruc
bonjour à tous


Une autre solution

Trouvée ici:
http://www.erlandsendata.no/english/index.php?d=envbadacimportadotxtws

Sub CreateNewWorkbookFromTextFile(strFolder As String, strTextFile As String)
' use like this: CreateNewWorkbookFromTextFile 'C:\\Temp', 'TextFileName.txt'
Dim cn As ADODB.Connection, rs As ADODB.Recordset, rsItems As ADODB.Recordset
Dim wb As Workbook, ws As Worksheet, i As Long, f As Long, strSQL As String
If Len(strFolder) = 0 Then Exit Sub
If Len(strTextFile) = 0 Then Exit Sub

Set cn = New ADODB.Connection
On Error Resume Next
cn.Open 'Driver={Microsoft Text Driver (*.txt; *.csv)};' & _
'Dbq=' & strFolder & ';' & _
'Extensions=asc,csv,tab,txt;'
On Error GoTo 0
If cn.State <> adStateOpen Then Exit Sub

' get all unique items from one field
Set rsItems = New ADODB.Recordset
strSQL = 'select distinct ITEM1 from ' & strTextFile
On Error Resume Next
rsItems.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
On Error GoTo 0
If rsItems.State <> adStateOpen Then ' did not find anything
Set rsItems = Nothing
cn.Close
Set cn = Nothing
Exit Sub
End If

Application.ScreenUpdating = False
' create a new workbook
Set wb = Workbooks.Add

i = 0
Do While Not rsItems.EOF ' for each unique field item
Application.StatusBar = 'Reading data for ' & rsItems(0).Value & '...'
i = i + 1
strSQL = 'select * from ' & strTextFile & ' where ITEM1 = '' & rsItems(0).Value & '''
Set rs = New ADODB.Recordset
On Error Resume Next
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
On Error GoTo 0
If rs.State = adStateOpen Then
Application.StatusBar = 'Writing data for ' & rsItems(0).Value & '...'
With wb
If i > .Worksheets.Count Then ' add a new worksheet
.Worksheets.Add After:=.Worksheets(.Worksheets.Count)
End If
With .Worksheets(i) ' populate the item worksheet
' write field headings
For f = 0 To rs.Fields.Count - 1
.Range('A1').Offset(0, f).Formula = rs.Fields(f).Name
Next f
.Rows(1).Font.Bold = True
' write data records
.Range('A2').CopyFromRecordset rs, .Rows.Count - 1, Columns.Count
.Columns('A:IV').AutoFit
End With
End With
rs.Close
End If
Set rs = Nothing
rsItems.MoveNext
Application.StatusBar = False
DoEvents
Loop
rsItems.Close
Set rsItems = Nothing
cn.Close
Set cn = Nothing
wb.Worksheets(1).Activate
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
 

Staple1600

XLDnaute Barbatruc
Une autre autre solution avec un code un plus concis

c'est ici qu'aussi on veut:
Importing large textfiles > 65536 rows


Option Explicit

'A reference to the Microsoft DAO x.x library must be set.
'A reference to the Microsoft Scriptin Runtime must be set.
'Setting reference is done in the VB-editor and via Tools | Reference...

Sub Import_Large_Textfiles_DAO()
'Developed by XL-Dennis and dk
Dim stPathway As String, stFilname As String, stGetFile As String
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim fsoObj As Object

stGetFile = Application.GetOpenFilename('Textfiles (*.txt),*.txt', , 'Open a textfile...')

If stGetFile = 'False' Then Exit Sub

Application.ScreenUpdating = False

Set fsoObj = CreateObject('Scripting.FileSystemObject')
stPathway = fsoObj.GetFile(stGetFile).ParentFolder.Path
stFilname = fsoObj.GetFile(stGetFile).Name


Set Db = OpenDatabase(stPathway, False, True, 'Text;')
Set Rst = Db.OpenRecordset('SELECT * FROM ' & stFilname)

While Not Rst.EOF
Worksheets.Add
ActiveSheet.Range('A1').CopyFromRecordset Rst, 65536
Wend

Rst.Close
Db.Close

Set Rst = Nothing
Set Db=Nothing
Application.ScreenUpdating = True
End Sub
 

Staple1600

XLDnaute Barbatruc
Pour aller dans le sens de Gael
(développer un utilitaire XLD d'Import
ou améliorer la macro de Microsoft)


Il y aura bien un petit frenchie sur ce forum
pour concocter un code VBA concurrencant
ces vbaistes d'outre Manche,auteurs des codes
cités dans mes précédentes réponses, non?


Un code épuré limpide et clair, vif comme le vent....


(PS: j'aime bien quand même les gens d'ailleurs)

Un premier compétiteur
L'auteur de Sub lecture_fichier_txt()
(voir
Lien supprimé
,merci Mytå)

(J'aurais du consulter les archives, comme le conseille Mytå)

Message édité par: staple1600, à: 17/09/2005 05:54

Message édité par: staple1600, à: 17/09/2005 05:58
 

Discussions similaires

Réponses
19
Affichages
597

Statistiques des forums

Discussions
312 321
Messages
2 087 263
Membres
103 498
dernier inscrit
FAHDE