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
Bonjour Job75!
Ah oui c’est chaud! Mais on peut le tenter non? Je sais pas combien de fichier texte peut on mettre dans un dossier..? Sans parler de l’automatisation de l’export qui doit à minima prendre 2 jours facile…
Non peut etre tu as raison je dois faire autrement…
Je vais reflechir pour faire differement. ;-)
 

job75

XLDnaute Barbatruc
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 27 000 fichiers CSV sont créés en 4,7 secondes seulement !

A+
 

Pièces jointes

  • Créer Fichiers CSV.zip
    432.9 KB · Affichages: 13

floflo12

XLDnaute Nouveau
Bonjour floflo12, ChTi160, le forum,

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 27 000 fichiers CSV sont créés en 4,7 secondes seulement !

A+
Mais non?! 27000 fichier texte qui sont nommé respectivement de 1 à 27000 avec 1 ligne par fichier..! Moins de 5 secondes?!
J’y crois pas!? La c’est impossible.!
 

scraper

XLDnaute Nouveau
Bonjour floflo12
C'est quoi la finalité de la chose?
Pour t'aider à répondre : Et si le fichier d'origine change, on recommence, que fait-on de la deuxième série des 27.000 fichiers? Une série par répertoire portant la date, ...? Comment on compare les séries de fichiers?
 

floflo12

XLDnaute Nouveau
Bonjour floflo12
C'est quoi la finalité de la chose?
Pour t'aider à répondre : Et si le fichier d'origine change, on recommence, que fait-on de la deuxième série des 27.000 fichiers? Une série par répertoire portant la date, ...? Comment on compare les séries de fichiers?
ah non une fois suffit! On recommence pas tout… le fichier d’origine ne bougera plus sinon je m’en sors pas… les fichiers sont numéroté de 1 à 27000 donc juste un contrôle F et je peux réutiliser mon fichier sans refaire un export..
 

scraper

XLDnaute Nouveau
Un controle F : c'est pour rechercher une chaine? : possible dans Notepad++
Sinon en scripting, ou en ligne de commande sur Windows, LINUX (grep), ...
sinon FINDSTR (find string du MSDOS) permet d'afficher les numéros de lignes où se trouvent une chaine.
idem facile avec POWERSHELL
$search="chaine"
$linenumber= Get-Content thing.txt | select-string $search
$linenumber.LineNumber
idem en vbscript : autre possibilité pour retourner les lignes où se trouvent une chaine, et possibilité de rechercher dans une colonne particulière ... à faire si besoin
 

Franc58

XLDnaute Occasionnel
Bonjour floflo12, ChTi160, le forum,

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 27 000 fichiers CSV sont créés en 4,7 secondes seulement !

A+
Ouaaaah! T'as une machine de guerre, avec mon I9 10980XE, 96Gb de ram et écriture vers un ramdisk, il me faut quand même 7 secondes.
 

Statistiques des forums

Discussions
315 085
Messages
2 116 075
Membres
112 650
dernier inscrit
badi44