VBA/ ajouter nom du fichier source copié dans une colonne
Bonjour à tous et merci par avance de votre aide.
J’essaie de regrouper des fichiers dans un nouveau classeur : Resultats.csv.
Tout est ok sauf que je n’arrive pas à mettre dans la colonne 10 (sur chaque ligne copiée) du nouveau classeur le nom du fichier source que j’ai par ailleurs dans ma variable fic ou elo.
Code:
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 59 60 61 62 63 64
| Sub concaténer() ' regroupement des commentaires
Const fdr = "Resultats.csv" ' fichier du résultat
Dim chemin As String ' classeur regroupé
Dim rep As String ' répertoire à traiter
Dim fic As String ' classeur regroupé
Dim nbl As Long ' lignes écriture
Dim nbc As Integer ' nombre de classeurs
Dim lig As Long ' ligne lecture
Dim Wl As Worksheet ' feuille regroupée
Dim tbc() ' tableau montants
Dim tbl() ' tableau lu
Dim pos As Integer ' position $ somme
Dim poz As Integer ' position " " somme
Dim elo As String
Application.EnableEvents = False
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "Choisissez votre répertoire"
.Filters.Clear
.Show
If .SelectedItems.Count = 0 Then Exit Sub
rep = .SelectedItems(1) & "\"
End With
Open rep & fdr For Output As #1
fic = Dir(rep & "*.xls*")
tbc = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
lig = 2
While fic <> ""
chemin = rep & fic ' chemin fichiers
elo = fic
Workbooks.Open chemin ' ouverture
On Error Resume Next
Set Wl = ActiveWorkbook.Sheets(1)
If Err.Number = 0 Then ' le classeur est sélectionné
tbl = Wl.UsedRange.Cells
While lig <= UBound(tbl) ' copier les 9 colonnes
Print #1, tbl(lig, 1) & ";" _
& tbl(lig, 2) & ";" _
& tbl(lig, 3) & ";" _
& tbl(lig, 4) & ";" _
& tbl(lig, 5) & ";" _
& tbl(lig, 6) & ";" _
& tbl(lig, 7) & ";" _
& tbl(lig, 8) & ";" _
& tbl(lig, 9)
lig = lig + 1
nbl = nbl + 1
Wend
nbc = nbc + 1
Else
Err.Clear
End If
ActiveWorkbook.Close SaveChanges:=False ' Fermeture du classeur
fic = Dir
lig = 3
Wend
Set Wl = Nothing
Close #1
MsgBox nbc & " Classeurs lus" & vbLf & nbl & " lignes écrites dans " & rep & fdr
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub |