Réaliser une boucle sur plusieur fichiers dans un dossier
Hello à tous les lecteurs
J'ai besoin de vos connaissances puisque je bloque sur la mise en place d'une boucle dans mon code.
Contexte :
Mon outil a pour objectif de convertir un fichier CSV vers CSV ou TXT. VBA intervient uniquement pour importer le fichier et exporter le résultat, la conversion est réalisée par le biais de plusieurs formules.
Fonctionnement :
Le module ci-dessous consiste à ouvrir une boite de dialogue afin de sélectionner le fichier CV à convertir. L'import se réalise et ensuite, le module récupère une autre feuille (contenant les données souhaitées) et l'exporte dans le dossier source.
Ma problématique est donc de mettre en place une boucle afin de réaliser ce processus (import fichier 1, export feuille A, import fichier 2, export feuille A) autant de fois qu'il y a de fichiers dans le dossier sélectionné.
Pensez-vous pouvoir m'aider ?
Merci d'avance,
Sub CONVERT_TO_CSV()
'J'organise mes variables
Dim Chemin, position, NomFeuille As String
Dim strFichier As String
Dim Name As String
'Je permet à l'utilisateur de selectionner le fichier à convertir
With Application.FileDialog(msoFileDialogFilePicker)
.Show
On Error Resume Next
Fichier = .SelectedItems.Item(1)
On Error GoTo 0
End With
If Fichier <> "" Then Sheets("IN_OUT").Range("B2").Value = Fichier
'J'insère dans une cellule, le chemin du fichier selectionné
fichier1 = Sheets("IN_OUT").Range("B2")
'J'insère dans une cellule, le nom de fichier selectionné
Fichier = Dir(fichier1)
Sheets("IN_OUT").Range("B3").Value = Fichier
'Je désactive l'affichage dynamique
Application.ScreenUpdating = False
'J'affiche les feuilles utiles
Sheets("INPUT").Visible = True
Sheets("INPUT").Range("A1:I105000").ClearContents
'J'ouvre le fichier à convertir
Workbooks.Open Filename:=fichier1, local:=True
'Je copie les données du fichier à convertir
Range("A1:I105000").Select
Application.CutCopyMode = False
Selection.Copy
'Je colle les données dans l'outil de conversion
Windows("Convert lite.xlsm").Activate
Sheets("INPUT").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Je selectionne le fichier à convertir pour le fermer sans enregistrer
Windows(Fichier).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Close False
Application.DisplayAlerts = True
'Je selectionne l'outil de conversion pour masquer INPUT
Windows("Convert lite.xlsm").Activate
Sheets("INPUT").Visible = xlSheetVeryHidden
'Je détermine mes variables
Chemin = Sheets("IN_OUT").Range("B7")
Name = Sheets("IN_OUT").Range("B6")
'J'affiche les feuilles utiles
Sheets("F2").Visible = True
Sheets("IN_OUT").Visible = True
'Je bloque la pop up
Application.DisplayAlerts = False
'Je copie la feuille
Worksheets("F2").Copy
'Je lance le process de conversion et enregistre mon fichier
With ActiveWorkbook
.SaveAs Filename:=Chemin & "\" & Name & ".csv", FileFormat:=xlCSV, local:=True
.Close
End With
'Je masque les feuilles
Sheets("F2").Visible = xlSheetVeryHidden
Sheets("IN_OUT").Visible = xlSheetVeryHidden
'Je reactive les pop up et l'affichage dynamique
Application.DisplayAlerts = False
Application.ScreenUpdating = True
'J'informe de la fin du process
MsgBox "Fichier disponible dans ton dossier", vbInformation
End Sub