Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2161 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lire .txt de 370 MB avec VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire .txt de 370 MB avec VBA

n°2134617
yalmallo
Posté le 03-04-2012 à 16:28:58  profilanswer
 

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.?
 
quelqu'un pourrait m'aider pour ça?
 
Merci d'avance.

mood
Publicité
Posté le 03-04-2012 à 16:28:58  profilanswer
 

n°2134629
kiki29
Posté le 03-04-2012 à 16:50:16  profilanswer
 
n°2134730
yalmallo
Posté le 04-04-2012 à 09:11:22  profilanswer
 


 
 
 
 
Merci,
 
J'ai déjà essayé ces codes, à titre d'exemple :
 
 
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.!!!
 
personne pour m'aider?


Message édité par yalmallo le 04-04-2012 à 11:02:21
n°2135056
yalmallo
Posté le 05-04-2012 à 16:36:42  profilanswer
 

OK. je vais essayer de voir ça après. peut être que je changerai ma méthodologie de travail.
 
Sinon, je cherche à trouver une méthode qui fait la suite:
 
1) ouvrir un fichier txt
2) chercher mot toto
3) copier toutes les lignes après "toto" dans un nouveau fichier txt.
4) dès qu'il trouve le mot "titi", arrêter de copier et fermer les fichiers txt.
 
 
exemple de fichier texte :
 
blablablabla
......
toto:
 
lignes à copier  dans nouveau texte
......
 
titi:
 
blablablabla.
 
......
 
fin texte
 
 
 
est-ce possible de faire un programme VBA qui fait ça?    :sarcastic:


Message édité par yalmallo le 05-04-2012 à 16:39:50
n°2136872
yalmallo
Posté le 16-04-2012 à 13:43:44  profilanswer
 

toujours pas de solution à ce problème?  :heink:

n°2136884
kiki29
Posté le 16-04-2012 à 14:30:27  profilanswer
 

Salut, c'est à toi que l'on devrait poser la question, tu sembles être dans l'expectative et attendre que cela te tombe tout cuit, ne compte pas sur moi , de plus tu multipostes sur DVP entre autres. Tu as tous les liens pour t'en sortir.


---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
n°2136891
yalmallo
Posté le 16-04-2012 à 14:53:23  profilanswer
 

kiki29 a écrit :

Salut, c'est à toi que l'on devrait poser la question, tu sembles être dans l'expectative et attendre que cela te tombe tout cuit, ne compte pas sur moi , de plus tu multipostes sur DVP entre autres. Tu as tous les liens pour t'en sortir.


 
 
Non, je n'attends pas que cela tombe tout cuit.!  peut être que je me suis mal exprimé, je voulais savoir s'il y a une fonction (une méthode ou autre) qui peut faire cette tâche?
 
Et oui, je multiposte car je multiplie la chance par 2.  ;)
 
De tte façon il fo que je vois ça avec un professionnel. je ne gagne rien en déposant des discussions sur les forums. apparemment, je dois aller chercher encore plus loin. :s
 
Merci à tous.    :)

n°2136895
yalmallo
Posté le 16-04-2012 à 15:08:27  profilanswer
 

kiki29 a écrit :

Salut, c'est à toi que l'on devrait poser la question, tu sembles être dans l'expectative et attendre que cela te tombe tout cuit, ne compte pas sur moi , de plus tu multipostes sur DVP entre autres. Tu as tous les liens pour t'en sortir.


 
 
Je rajoute aussi : je suis débutant, donc j'essai de chercher l'information par tout pour que je puisse avoir une base correcte une massive.   :)  
j'espère que ça ne fera mal à personne, non?  :??:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lire .txt de 370 MB avec VBA

 

Sujets relatifs
VBA : Transférer une matrice dans un tableur Excel[BATCH] Lire une certaine partie d'un fichier texte
Formulaire en VBA dans feuille Excel[VBA] Callback / Timeout
Fête d'ami - VBA dans Excel 2007besoin d'une petite ligne VBA pour Access
Un graphique Excel avec des aspects différents ! SVP !!! (VBA)Comment peut-on lire un fichier pdf en php?
Aide VBA - verrouillage code et celluleVBA - aide sur macro comparative
Plus de sujets relatifs à : Lire .txt de 370 MB avec VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR