Saucissonner des fichiers TXT

Bonjour le Forum

Je cherche une tite macro pour saucissonner mes fichier txt qui sont beaucoup trop gros pour excel. (1,5giga )

Je cherche à ce que la macro me coupe mes fichiers en plusieurs petit Txt et que ceux-ci garde la première ligne d'entête

Si quelqu'un avais cela dans ses cartons je suis preneur

Merci d'avance et excellente semaine à tous

Bonjour,

J'ai déjà dû faire la même chose sur de gros fichiers CSV, tu trouveras des logiciels gratuits sur internet qui permettent de couper un fichier texte en plusieurs plus petits fichiers textes, mais ça ne mettra pas tout le temps les en-têtes en haut des fichiers, il faudra que tu les replaces toit même, et que tu fasses attention aux coupures de colonnes

Bonjour à tous,

Pour ce genre de tâche, j'ai ma méthodo, démo jointe :

Au début un fichier Test.txt contenant une liste de communes de plusieurs régions.

La procédure "Sub Saucisson" :

* demande la sélection du fichier txt => Ndf = Selection_Fichier

* lit le fichier => T1 = T_Import(Ndf)

* dresse la liste des régions => T2 = Combo_T(T1, 2)

* et pour chaque région :

  • - selectionne les lignes correspondantes => T3 = Select_T(T1, 2, CStr(T2(i)))
  • - exporte ces lignes dans un fichier txt nommé avec le nom de la région => S = T_Export(T3, Ndf)
* et enfin affiche un message de résultat => MsgBox IIf(R = 1, "Ok trop bien!", "La Loose ")

Nb : pour la démo, le fichier txt de 3ko est extrait d'un fichier de 3,7 Go

Ici le découpage se fait selon les régions (ici en colonne 2). En fonction du txt initial, on peut faire un découpage sur un autre critère quelconque

Et préservation de la ligne d'entête pour chaque fichier enfant, bien sûr

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************

Sub Saucisson()
Dim T1 As Variant, T2 As Variant, T3 As Variant
Dim Ndf As String, S As String
Dim i As Integer, R As Integer

    R = 1
    Ndf = Selection_Fichier
    T1 = T_Import(Ndf)
    T2 = Combo_T(T1, 2)
    For i = 0 To UBound(T2)
        T3 = Select_T(T1, 2, CStr(T2(i)))
        Ndf = ThisWorkbook.Path & "\" & T2(i) & ".txt"
        S = T_Export(T3, Ndf)
        R = R * CInt(S)
    Next i
    MsgBox IIf(R = 1, "Ok trop bien!", "La Loose :(")
End Sub
6saucisson.zip (28.18 Ko)

Bonjour,

Merci pour cet exemple mais je ne vois pas comment l'adapter à mes fichiers car ceux-ci n'ont pas de critère permettant la coupure.

Mes données sont sous forme Txt en colonne ils comprennent uniquement une entête de colonne et après que des données numérique.

Mon but est de pouvoir les ouvrir et les traiter dans excel

Avec des fichiers de 1,5 giga c'est compliquer, à partir de 800Mo j'ai déjà quelques soucis de mémoire lors de macro

Merci

Pas de souci, c'est facile à adapter avec comme critère un nombre quelconque de lignes.

Voici un exemple, en B1 un nb de lignes (qu'on peut modifier comme on veut).

Comme précédemment :

* on sélectionne un fichier txt

* le code fait successivement des sélections de x lignes jusqu'à la fin du txt

* et exporte ces lignes dans un fichier txt nommé avec le n° de la 1ere ligne de la sélection (1.txt, 101.txt, etc ... si B1=100)

Avec toujours la préservation de la ligne d'entête pour chaque fichier enfant.

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************

Sub Saucisson_nb()
Dim T1 As Variant, T2 As Variant
Dim Ndf As String, S As String
Dim Nb As Long, i As Long, R As Integer

    R = 1
    Nb = Sheets("Feuil1").Range("B1").Value
    Ndf = Selection_Fichier
    T1 = T_Import(Ndf)
    For i = 0 To UBound(T1) Step Nb
        T2 = Select_De_A(T1, i + 1, i + Nb)
        Ndf = ThisWorkbook.Path & "\" & i + 1 & ".txt"
        S = T_Export(T2, Ndf)
        R = R * CInt(S)
    Next i
    MsgBox IIf(R = 1, "Ok trop bien!", "La Loose :(")
End Sub

Ci-joint fichier xl avec txt de test

Pierre

11saucisson-2.zip (67.95 Ko)
Rechercher des sujets similaires à "saucissonner fichiers txt"