Ouvrir plusieurs csv d'un dossier et y appliquer une macro

Bonjour/Bonsoir à tous,

Je début sur le VBA et je fais face à un problème technique.

Je vous explique ma situation :

  • j'ai un dossier dans lequel j'ai 46 fichier CSV avec séparateur ;
  • Je souhaiterai faire une macro qui m'ouvre chacun des fichier csv présent dans le dossier pour y appliquer un traitement faisant appel à une autre macro (que j'ai réussi à faire ^^)
  • puis m'enregistre le résultat en fichier excel dans un autre répertoire, ferme le fichier et passe au suivant

Je n'arrive pas à trouver de solution si quelqu'un pouvait m'éclairer se serai génial !

Merci par avance du temps consacré

Bonjour et bienvenu(e)

A tester

Option Explicit

Sub Lecture()
Dim Chemin As String, Fichier As String
Dim CheminSauvegarde As String

  Application.ScreenUpdating = False

  ' ********** Ne pas oublier le dernier "\" **********
    Chemin = "C:\.............\"                   ' Ton chemin fichiers CSV à adapter
    CheminSauvegarde = "C:\...................\"   ' Ton chemin sauvegarde fichiers Excel à adapter

  Fichier = Dir(Chemin & "*.csv")
  Do While Fichier <> ""
    Workbooks.OpenText Filename:=Chemin & Fichier, DataType:=xlDelimited, _
                       TextQualifier:=xlTextQualifierNone, Local:=True
    With ActiveWorkbook
      With .Sheets(1)
        '
        ' Ta macro
        '
      End With
      .SaveAs Filename:=CheminSauvegarde & Replace(Fichier, ".csv", ".xlsx"), FileFormat:=xlOpenXMLWorkbook
      .Close savechanges:=False
    End With
    Fichier = Dir()
  Loop
End Sub

Bonsoir,

Avant tout merci pour la très rapide réponse

La solution proposé marche très bien à condition que je supprime la partie qui crée des TCD dans mon traitement.

En effet celle ci pose problème car je l'ai faite grâce à l'enregistreur de macro et elle ne fonctionne du coup que pour le fichier sur laquelle elle a été faite car pour les autres j'ai une erreur du à un nom de fichier différent (normal car 46 nom de fichiers différents )

Columns("A:O").Select

Sheets.Add

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"03_DTvsSID_maille=clef+AgeTerme!R1C1:R1048576C15", Version:= _

xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil1!R3C1", _

TableName:="Tableau croisé dynamique1", DefaultVersion:= _

xlPivotTableVersion14

Aussi j'aimerai savoir plutôt que d'enregistrer les 46 fichiers excel différents est il possible de les mettre tous dans 1 seul classeur en ayant 46 feuilles (une par csv en l'occurrence 1 TCD par feuille)

Merci infiniment

Bonjour

A vérifier

Option Explicit

Sub Lecture()
Dim Chemin As String, Fichier As String
Dim CheminSauvegarde As String

  Application.ScreenUpdating = False

  ' ********** Ne pas oublier le dernier "\" **********
    Chemin = "C:\.............\"                   ' Ton chemin fichiers CSV à adapter
    CheminSauvegarde = "C:\...................\"   ' Ton chemin sauvegarde fichiers Excel à adapter

  Fichier = Dir(Chemin & "*.csv")
  Do While Fichier <> ""
    Workbooks.OpenText Filename:=Chemin & Fichier, DataType:=xlDelimited, _
                       TextQualifier:=xlTextQualifierNone, Local:=True
    With ActiveWorkbook
      .Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
      .Close savechanges:=False
    End With
    Fichier = Dir()
  Loop
End Sub

impeccable merci beaucoup monsieur

Rechercher des sujets similaires à "ouvrir csv dossier appliquer macro"