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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fichier texte trop volumineux/ extraire certaines données vers excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fichier texte trop volumineux/ extraire certaines données vers excel

n°2166256
gabegu89
Posté le 01-12-2012 à 12:05:13  profilanswer
 

Bonjour,
 
Je suis nulle en informatique et j'aurais bien besoin d'une main secourable.
 
J'ai besoin d'analyser sous excel un fichier texte de plusieurs millions de lignes.  
Vu que c'est beaucoup trop volumineux, je souhaiterai extraire seulement certaines données.
Le fichier txt est de type
date            heure  volume
01/01/1991 07:00 1223344
01/01/1991 07:01 1228553
01/01/1991 07:02 1228557
... jusqu'en 2010
 
Je souhaiterais extraire par exemple, les données de 2000 à 2005.
Je sais qu'il est possible d'ouvrir l’entièreté des données en les important dans plusieurs sheets voir workbooks, pour ensuite les trier, mais comment extraire directement les bonnes années ?
 
Merci beaucoup  
 
Gabrielle

mood
Publicité
Posté le 01-12-2012 à 12:05:13  profilanswer
 

n°2166262
Marc L
Posté le 01-12-2012 à 13:48:23  profilanswer
 

 
              Bonjour !     Sans plus d'information, je dirais qu'en lisant le fichier ligne par ligne par exemple via l'instruction Line Input # (voir l'aide de VBA)
              il est facile alors de tester l'année; mais cela risque d'être assez long …
 
              Si par contre le fichier a une structure fixe, en l'ouvrant en mode Random (voir l'aide de l'instruction Open),
              il est alors possible de commencer la lecture par exemple à la moitié du fichier pour accélérer (un peu) la lecture …   (voir les instructions Get # & LOF)
 
              Pour la suite, plus d'info sur la structure du fichier et le listing de votre code sont nécessaires …
              (Rappel des points 0C & 0D des règles du forum)
 

n°2166363
kiki29
Posté le 03-12-2012 à 07:00:39  profilanswer
 

Salut, affecter un bouton à la procédure SelDossier
 
La partie suivante sera celle à adapter à ton contexte notamment via un split sur la chaine pour récupérer la date et un Right$ sur cette date pour récupérer l'année
 

             If InStr(sChaine, "AZERTY" ) = 0 Then
                            Print #NumFichier2, sChaine
                        End If


 

Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                             (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
 
Option Explicit
 
Private Function CreationDossier(sDossier) As Long
Dim Rep As Long
    Rep = SHCreateDirectoryEx(0&, sDossier, 0& )
End Function
 
Private Sub Lire(sDossier As String)
Dim sFichierIn As String, sFichierOut As String
Dim sChaine As String
Dim NumFichier1 As Integer, NumFichier2 As Integer
Dim sCheminIn As String, sCheminOut As String, sExt As String
Dim sDossierOut As String
 
    Close
     
    sDossierOut = ThisWorkbook.Path & "\" & "Filtrés"
    CreationDossier sDossierOut
     
    sFichierIn = Dir$(sDossier & "\*.*" )
    Do While Len(sFichierIn) > 0
        sExt = Right$(sFichierIn, Len(sFichierIn) - InStrRev(sFichierIn, "." ))
        sFichierOut = sFichierIn
        If UCase$(sExt) = "TXT" Then
            sCheminIn = sDossier & "\" & sFichierIn
            sCheminOut = sDossierOut & "\" & sFichierOut
            NumFichier1 = FreeFile
            Open sCheminIn For Input As #NumFichier1
                NumFichier2 = FreeFile
                Open sCheminOut For Output As #NumFichier2
                    Do While Not EOF(NumFichier1)
                        Line Input #NumFichier1, sChaine
 
                        If InStr(sChaine, "AZERTY" ) = 0 Then
                            Print #NumFichier2, sChaine
                        End If
 
                    Loop
                Close #NumFichier2
            Close #NumFichier1
        End If
        sFichierIn = Dir$()
    Loop
End Sub
 
Sub SelDossier()
Dim sChemin As String
    sChemin = ThisWorkbook.Path
     
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = sChemin & "\"
        .Title = "Sélectionner le Dossier Racine"
        .AllowMultiSelect = False
        .ButtonName = "Sélection Dossier"
        .Show
        If .SelectedItems.Count > 0 Then
            DoEvents
            Lire .SelectedItems(1)
        End If
    End With
End Sub


Message édité par kiki29 le 03-12-2012 à 07:41:02

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html

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

  Fichier texte trop volumineux/ extraire certaines données vers excel

 

Sujets relatifs
calculer en rexx taille fichier ibmVBA (Excel 2010) Syntaxe Range
Un template à partir d'un fichier xls ?comment connaitre la fin d'un fichier avec des fonctions de bas niveau
récuperer un caractère dans un fichier avec readAjout données autres feuilles à la suite de la précédente
Déclenchement Macro à l'ouverture du fichierPb fonction RechercheV Excel
envoi direct de fichier postcript a une imprimante reseau sans driversBoite de dialogue pour rechercher, modifier et ajouter des données.
Plus de sujets relatifs à : Fichier texte trop volumineux/ extraire certaines données vers excel


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