anthooooony
XLDnaute Occasionnel
Bonjour cher Excelien
Après plusieurs heures passés devant cette ordinateur windows je m'incline(encore) devant vous pour vous demander de l'aide !!
J'ai un fichier txt qui fait 800Mo, avec 100Mo de retraitement mais ce n'est pas le sujet !
C'est un export avec toutes les pieces de ma société.
J'ai une macro qui permet de tout les 500 000 de lignes créer un onglet. C'est bien, lors qu'on a 1 ou deux millons de lignes, la je suis à pret de 3 millions et mes RAM ne suivent pas, ce qui fait qu'il plante.
Auriez vous un code VBA qui pourrait lui demander de se découper par tranche?
Exemple
1 à 1 000 000
Je pourrais la lancer une deuxième fois
1 000 001 à 2 000 000
2 000 001 à 3 000 000
Il me sera plus facile a traiter par la suite 1à1 qu'un fichier ayant 3ou4millons de ligne...(que d ailleur je n arrrive pas a avoir vu qu'il plante avant la réstitution des infos.)
Merci à vous
anthooooony
Après plusieurs heures passés devant cette ordinateur windows je m'incline(encore) devant vous pour vous demander de l'aide !!
J'ai un fichier txt qui fait 800Mo, avec 100Mo de retraitement mais ce n'est pas le sujet !
C'est un export avec toutes les pieces de ma société.
J'ai une macro qui permet de tout les 500 000 de lignes créer un onglet. C'est bien, lors qu'on a 1 ou deux millons de lignes, la je suis à pret de 3 millions et mes RAM ne suivent pas, ce qui fait qu'il plante.
Auriez vous un code VBA qui pourrait lui demander de se découper par tranche?
Exemple
1 à 1 000 000
Je pourrais la lancer une deuxième fois
1 000 001 à 2 000 000
2 000 001 à 3 000 000
Il me sera plus facile a traiter par la suite 1à1 qu'un fichier ayant 3ou4millons de ligne...(que d ailleur je n arrrive pas a avoir vu qu'il plante avant la réstitution des infos.)
Merci à vous
anthooooony
Code:
'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", , "Please select text file...")
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=Yes;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, 500 000
Wend
oRS.Close
oConn.Close
Application.ScreenUpdating = True
End Sub