XL 2010 synthèse caisse csv (très difficile)

erwanhavre

XLDnaute Occasionnel
Bonjour à tous j'ai besoin de vous pour mon pb en titre
voila j'ai une caisse enregistreuse Casio qui m'exporte plusieurs fichier csv par jour (4 fichiers portant le même nom) un seul m’intéresse celui-ou est noté en a2 : FICHIER ,"FILE005"
voir pj
l’idée serai de récupérer automatiquement les données de chaque csv contenu dans un dossier que l'on appellera "X" (jusqu’à mois mois d'archives à balayer..)
dans le fichier test il y à 2 onglet
1 pour vous montrer l'exemple de fichier csv et un onglet test dans lequel devrons s’inscrire chaque ligne (par jour)
l’idéal serait d'importer avec une macro tous les fichier csv contenant FICHIER ,"FILE005" en a2 avec les infos par jour
N'hésitez pas si vous avez besoin de précisions et surtout merci d'avance
 

Pièces jointes

  • test.xlsx
    9.3 KB · Affichages: 42

Staple1600

XLDnaute Barbatruc
Re

@erwanhavre
Déjà, au cas où cela puisse te servir, je poste une macro (que j'avais utilisée dans un autre fil)
VB:
Sub CSV_Import_IV()
'recyclons, recyclons ;-)
'copie à peine retouchée de ma réponse dans ce fil
'https://www.excel-downloads.com/threads/comparer-date-dans-fichier-ferm%C3%A9.20023132/page-2#post-20172742
Dim ws As Worksheet, fichier As Variant
Set ws = ActiveSheet
fichier = Application.GetOpenFilename("Fichier CSV (*.csv),*.csv", , "Choisissez le fichier à importer...")
If fichier = False Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next 'sécurité
With ws
    With .QueryTables.Add(Connection:="TEXT;" & fichier, Destination:=ws.Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .TextFileDecimalSeparator = "."
        .Refresh
    End With
End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@erwanhavre
Ci-dessous deux macros
La 1ère importe tous les CSV sélectionnés dans une seule feuille ( à la queue leu-leu)
La 2ième importe tous les CSV en créant une feuille par CSV importé
Je te laisse tester
(test OK sur mon PC)
VB:
Sub Multi_ImportCSV_A()
Dim fCSV, i&, qtB
fCSV = _
Application.GetOpenFilename(FileFilter:="Fichier CSV (*.csv), *.csv", MultiSelect:=True, Title:="Sélectionner les fichier CSV")
If IsArray(fCSV) Then
  For i = LBound(fCSV) To UBound(fCSV)
  With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;" & fCSV(i), Destination:=Cells(Rows.Count, 1).End(3).Offset(1, 0))
    .TextFileParseType = 1: .TextFileCommaDelimiter = -1
    .TextFileDecimalSeparator = ".": .Refresh BackgroundQuery:=0
  End With
  Next i
For Each qtB In ActiveSheet.QueryTables: qtB.Delete: Next qtB
Else
MsgBox "Aucun fichier CSV sélectionné!", 16, "Erreur"
End If
End Sub
VB:
Sub Multi_ImportCSV_B()
Dim fCSV, i&, ws As Worksheet, qtB
fCSV = _
Application.GetOpenFilename(FileFilter:="Fichier CSV (*.csv), *.csv", MultiSelect:=True, Title:="Sélectionner les fichier CSV")
Application.ScreenUpdating = False
If IsArray(fCSV) Then
  For i = LBound(fCSV) To UBound(fCSV)
      With Sheets.Add(after:=Sheets(Sheets.Count))
      .Name = Split(Dir(fCSV(i)), ".")(0)
      With .QueryTables.Add(Connection:="TEXT;" & fCSV(i), Destination:=.Cells(1))
      .TextFileParseType = 1: .TextFileCommaDelimiter = -1
      .TextFileDecimalSeparator = ".": .Refresh BackgroundQuery:=0
      End With
      End With
  Next i
For Each ws In ActiveWorkbook.Worksheets
For Each qtB In ws.QueryTables
qtB.Delete
Next qtB
Next ws
Else
MsgBox "Aucun fichier CSV sélectionné!", 16, "Erreur"
End If
End Sub
 

Statistiques des forums

Discussions
314 094
Messages
2 105 816
Membres
109 432
dernier inscrit
GEORGESDEL