Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Comment enregistrer chaque ligne en tant que fichier texte dans Excel?

floflo12

XLDnaute Nouveau
Bonjour tous le monde?

Voilà une question « simple » je pense mais j’avoue que je bloque…Comment enregistrer chaque ligne en tant que fichier texte dans Excel?
Voilà l’exemple type sur Excel:

A B C E. F. G. H. I.
1 1 FR ds grec 94 thé vente. Ok
2 2. FR. Me ita. 62 thé vente Ok
3 3. FR. Ds. Grec 66 thé vente ok

Je veux un export automatique de mes 27000 lignes en texte ou csv (le plus simple) répartis comme ceci:

1.txt ( le fichier texte contient Fr,ds,grec,94…)

J’essaie de vous faire par de mon fichier dans la semaine..! Un grand merci encore pour votre temps et votre énergie!!
 
Solution
Bonjour floflo12, ChTi160, le forum,
Ah oui c’est chaud! Mais on peut le tenter non?
Ben oui, voyez le fichier zippé joint et cette macro :
VB:
Sub FichiersCSV()
Dim t, chemin$, i%, fichier$, x%
t = Timer
chemin = ThisWorkbook.Path & "\Fichiers CSV\"
If Dir(chemin, vbDirectory) = "" Then MkDir chemin
With [A1].CurrentRegion
    For i = 1 To .Rows.Count
        fichier = chemin & Format(i, "00000") & ".csv"
        x = FreeFile
        Open fichier For Output As #x 'ouverture en écriture séquentielle
        Print #x, Join(Application.Transpose(Application.Transpose(.Rows(i))), ";")
        Close #x
    Next
End With
MsgBox Format(i - 1, "#,##0") & " fichiers CSV créés en " & Format(Timer - t, "0.00 \s")
End Sub
Chez moi les...

floflo12

XLDnaute Nouveau
Pour être précis j’ai 29459 lignes comprenant 7 infos par ligne… Ça change quelques choses à la ligne de code ou pas?
 

jurassic pork

XLDnaute Occasionnel
Hello,
je ne vois pas toujours très bien à quoi vont te servir tous ces fichiers alors que tu as les infos dans ton fichier Excel ? et pourquoi pas un seul csv avec tout dedans ?
Ami calmant, J.P
 

floflo12

XLDnaute Nouveau
arfff!! 27 secondes...
Mais bon j'ai le droit à un 2eme essaie car il y a dans la vba le 1er chiffre et j'en ai pas besoin..( il est déjà dans le nom du fichier..) je peux te demander juste quel modification faire stp?
En tout cas merci pour tout!
 

Franc58

XLDnaute Occasionnel
Pour le fun, j'ai codé une nouvelle macro avec tableau en mémoire, j'abaisse mon temps à 4.2 secondes

VB:
Sub FichiersCSV()
    Dim t As Double, chemin As String, i As Long, fichier As String, x As Integer
    Dim tableau As Variant, ligne As String
    Dim j As Long, nbColonnes As Long
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    
    t = Timer
    
    chemin = ThisWorkbook.Path & "\Fichiers CSV\"
    If Dir(chemin, vbDirectory) = "" Then MkDir chemin
    
    tableau = [A1].CurrentRegion.Value
    nbColonnes = UBound(tableau, 2)
    
    For i = 1 To UBound(tableau, 1)
        fichier = chemin & Format(i, "00000") & ".csv"
        ligne = ""
        
        For j = 1 To nbColonnes
            ligne = ligne & tableau(i, j) & IIf(j < nbColonnes, ";", "")
        Next j
        
        x = FreeFile
        Open fichier For Output As #x
        Print #x, ligne
        Close #x
    Next i
    
    MsgBox Format(i - 1, "#,##0") & " fichiers CSV créés en " & Format(Timer - t, "0.00 \s")
    
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
End Sub
 

jurassic pork

XLDnaute Occasionnel
Hello,
vue la différence de temps d'exécution entre TooFatBoy et les autres, avec le nombre de fichiers à traiter, à mon avis TooFatBoy utilise un disque magnétique et les autres des SSD. Et floflo12 n'a pas répondu à mon message #18
Ami calmant, J.P
 

TooFatBoy

XLDnaute Barbatruc
Oui, j'utilise un disque dur, mon PC a plus de 15 ans, mais surtout j'ai toujours eu des problèmes de lenteur au niveau des disques durs.

Je suis en RAID1 au niveau du BIOS de la CM, pour l'OS (un HDD SATA2 en 5400 et un SSD en SATA2), et aussi pour les données (deux HDD SATA2 en 5400, mais la taille des blocs n'est pas la même me semble-t-il...).

Les benchs sont à peu près corrects, mais à l'utilisation je ne dépasse jamais les 30 Mo/s, et plus généralement je tourne à 8 ou 10 Mo/s.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…