1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| Sub ExportData()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim folderPath As String
Dim fileName As String
Dim participantName As String
Dim dict As Object
Dim key As Variant
'Définit la feuille de calcul active comme la première feuille dans le classeur actif
Set ws = ThisWorkbook.Sheets(1)
'Détermine la dernière ligne de données en recherchant la dernière cellule non vide dans la colonne A
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'Définit le chemin d'accès au dossier de destination
folderPath = "C:\Chemin\vers\le\dossier\de\destination\"
'Crée un nouveau dictionnaire
Set dict = CreateObject("Scripting.Dictionary")
' Stocke les choix de formation uniques dans un dictionnaire
For i = 2 To lastRow
'Récupère le nom du dossier de destination à partir de la colonne D
fileName = ws.Cells(i, "D").Value
'Vérifie si le nom du dossier existe déjà dans le dictionnaire. Si ce n'est pas le cas, ajoutez-le.
If Not dict.Exists(fileName) Then
dict.Add fileName, 0
End If
Next i
' Crée des dossiers pour chaque choix de formation
For Each key In dict.Keys
'Vérifie si le dossier de destination existe déjà. Si ce n'est pas le cas, créez-le.
If Len(Dir(folderPath & key, vbDirectory)) = 0 Then
MkDir folderPath & key
End If
Next key
'Itère à travers chaque ligne de données, en commençant par la deuxième ligne (la première ligne contient les en-têtes de colonne)
For i = 2 To lastRow
'Récupère le nom du dossier de destination à partir de la colonne D
fileName = ws.Cells(i, "D").Value
'Crée le nom du fichier CSV en combinant le nom et le prénom du participant
participantName = ws.Cells(i, "A").Value & "_" & ws.Cells(i, "B").Value
'Ouvre un fichier CSV pour écrire les données
Open folderPath & fileName & "\" & participantName & ".csv" For Output As #1
'Écrit les en-têtes de colonne dans le fichier CSV
Print #1, "Nom,Prénom,Email,Formation choisie"
'Écrit les données du participant dans le fichier CSV
Print #1, ws.Cells(i, "A").Value & "," & ws.Cells(i, "B").Value & "," & ws.Cells(i, "C").Value & "," & ws.Cells(i, "D").Value
Close #1
Next i
MsgBox "Terminé!"
End Sub |
Partager