XL 2019 .XLS to .CSV to Files 1

gildasbati

XLDnaute Nouveau
Ami du jour, bonjour !
Ami du soir, bonsoir !

Je suis nouveau sur le forum et tres content d'en faire parti maintenant.

Mon probleme concerne la conversion de fichier xls en csv et la consolidation de ces fichiers csv en un seul.
a) J'ai reussi l'etape 1 c'est a dire de convertir mes fichiers xls and csv, malheuresement malgre la conversion effectuee je me retrouve avec des fichiers csv qui s'ouvrent comme si rien n'avait ete fait. Que dois-je faire?
Sachant que j'ai 411 fichier csv a traiter le faire un par un serait un vrai calvere.
b) Quelqu'un aurait-il l'amabilite de me fournir le squelette du code vba pour la consolidation des 411 fichiers csv dans un seul?

Merci a vous

En esperant que quelqu'un soit disponible
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @gildasbati, bienvenue sur XLD :)

Nous aimons le concret. Joindre le fichier contenant votre macro pour convertir un fichier serait un premier plus. Joindre un ou deux exemples de fichiers à convertir nous conviendrait aussi. Nous dire si les fichiers à convertir ont tous la même structure nous siérait également. Savoir où sont les 411 fichiers et leurs noms nous aiderait pareillement.
 
Dernière édition:

gildasbati

XLDnaute Nouveau
Merci pour ta reponse,
Alors pour la macro utilisee dans mon premier fichier excel exportee du logiciel sage, c'est la suivante (qui fonctionne tres bien ) :

Sub ExportSheetsToCSV()
Dim xWs As Worksheet
Dim xcsvFile As String
For Each xWs In Application.ActiveWorkbook.Worksheets
xWs.Copy xcsvFile = CurDir & "\" & xWs.Name & ".csv"
Application.ActiveWorkbook.SaveAs Filename: = xcsvFile, _
FileFormat: = xlCSV, CreateBackup: = False
Application.ActiveWorkbook.Saved = True
Application.ActiveWorkbook.Close
Next
End Sub


Trouvez en pj le repertoire que j'aimerais consolider en un seul fichier,
vous remarquerez aussi l'anomalie concernant les fichier CSV converti qui continue de s'ouvrir en format excel malgre la transformation effectue.

Bien a vous

Merci[/QUOTE]
 

Pièces jointes

  • Classeur10.xlsx
    26.4 KB · Affichages: 6
  • InvoicesCSV.zip
    320.8 KB · Affichages: 8
Dernière édition:

gildasbati

XLDnaute Nouveau
Bonsoir @gildasbati, bienvenue sur XLD :)

Nous aimons le concret. Joindre le fichier contenant votre macro pour convertir un fichier serait un premier plus. Joindre un ou deux exemples de fichiers à convertir nous conviendrait aussi. Nous dire si les fichiers à convertir ont tous la même structure nous siérait également. Savoir où sont les 411 fichiers et leurs noms nous aiderait pareillement.
Houhouuuu
 

patricktoulon

XLDnaute Barbatruc
re
houhou!!
bonjour
pour compiler des csv pas besoin de passer par l'ouverture de chaque csv du dossier
tu peux tout faire en mémoire

exemple testé avec ton dossier complet
4 secondes pour faire le job

VB:
Option Explicit
Sub compil()    ' recupe le texte complet  avec binary acces read
    Dim laChain$, x&, x2&, fichier$, newfichier$, chemin$, Lachaine$
    chemin = "C:\Users\polux\DeskTop\InvoicesCSV\"
    newfichier = "fichierFinal.csv"
    If Dir(chemin & newfichier) <> "" Then Kill chemin & newfichier
    fichier = Dir(chemin & "*.csv")

    Do While fichier <> ""

        If fichier <> newfichier Then
            x = FreeFile
            Open chemin & fichier For Binary Access Read As #x
            Lachaine = String(LOF(x), " ")
            Get #x, , Lachaine
            Close #x
             x2 = FreeFile
            Open chemin & newfichier For Append As #x2
            Print #x2, Lachaine & vbCrLf
            Close #x2
        End If
        fichier = Dir
    Loop
MsgBox "compilation terminée"

End Sub
le fichier final se retrouve dans le dossier a la fin
 

gildasbati

XLDnaute Nouveau
Hello @patricktoulon

Premierement merci beaucoup pour ta reponse efficace et rapide, la macro a bien fonctionnee pour tous compiler dans une seule feuille.
Cependant j'aimerais savoir, est-til possible de le compiler dans plusieurs feuilles differentes d'un meme classeur ? (Cela me corespondrait plus)

Deuxiemement, J'ai toujours le meme probleme. Les fichiers sont convertis en .csv mais continuent de s'ouvrir en format classeur excel au lieu d'un fichier csv texte avec ; comme separateur.

Merci beaucoup
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Puisque gildasbati veut que chaque facture soit récupérée dans une feuille on procédera en 2 temps :

1) création des feuilles avec cette macro qui se lance par les touches Ctrl+A :
VB:
Sub CreerFeuilles()
'se lance par le raccourci clavier Ctrl+A
Dim n%, chemin$, fichier$
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
For n = Sheets.Count To 2 Step -1: Sheets(n).Delete: Next 'RAZ
chemin = Me.Path & "\InvoicesCSV\"
fichier = Dir(chemin & "*.csv")
n = 0
Sheets(1).Cells.ClearContents 'RAZ
While fichier <> ""
    n = n + 1
    If n > 1 Then Sheets(1).Copy After:=Sheets(Sheets.Count)
    Sheets(n).Name = Left(fichier, Len(fichier) - 4)
    fichier = Dir
Wend
Sheets(1).Activate
Workbook_SheetActivate Sheets(1) 'lance la macro
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox IIf(n, n, "Aucune") & IIf(n > 1, " feuilles créées...", " feuille créée...")
End Sub
2) remplissage de la feuille lors de son activation avec ce code dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim chemin$, fichier$, r As Range, ds$
chemin = Me.Path & "\InvoicesCSV\"
fichier = Dir(chemin & Sh.Name & ".csv")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sh.Cells.ClearContents 'RAZ
If fichier = "" Then Exit Sub
Workbooks.OpenText chemin & fichier, Local:=True
Set r = ActiveWorkbook.Sheets(1).UsedRange
Sh.[A3].Resize(r.Rows.Count) = r.Value
ActiveWorkbook.Close
Sh.[A3].CurrentRegion.TextToColumns Sh.[A3], xlDelimited, Comma:=True 'commande Convertir
'---traitement des dates et des nombres---
ds = Application.DecimalSeparator
For Each r In Sh.UsedRange
    If IsNumeric(Replace(r, ".", ds)) Then r = CDbl(Replace(r, ".", ds))
    If IsDate(r) Then r = CDate(r)
Next
End Sub
Fichiers zippés joints, le fichier Classeur(1).xlsm et le sous-dossier InvoicesCSV doivent être dans le même répertoire.

Edit : j'ai finalement mis la macro CreerFeuilles dans le ThisWorkbook.

A+
 

Pièces jointes

  • Classeur(1).zip
    337.7 KB · Affichages: 3
Dernière édition:

Discussions similaires