Bonjour,
Je cherche à lire un fichier .txt de 370 MB avec VBA et importer des données dans Excel.
J'ai réussi à trouvé des codes pouvant me faire cette tache mais ça prend énormément de temps!!! Donc, je termine par arrêter le processus car le temps est très long pour une tâche pareil.
Y a-t-il un moyen de réduire ce temps ( lire le txt en cache par exemple, ou faire parcourir le txt pour trouver les données nécessaires et puis les stocker dans Excel......etc.?
J'ai déjà essayé des codes, à titre d'exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Sub Extraction_V2() 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", , _ "selectionner un fichier .txt :" ) '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 ActiveSheet.Range("A1" ).CopyFromRecordset Rs, 65536 Wend Rs.Close Set Rs = Nothing Cn.Close Set Cn = Nothing Application.ScreenUpdating = True End Sub
Mais quand je lance ce code, il y a un message qui apparaît en disant : " Excel ne peut pas terminer cette tâche avec les ressources disponibles. Sélectionner moins de données ou fermer des applications."
Donc, quoi faire dans ce cas?
Je pense que le problème vient de la taille de fichier txt.!!!
quelqu'un pourrait m'aider pour ça?
Merci d'avance.
Partager