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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
| 'Worksheet
Dim ws_conso As Worksheet
Dim ws_closing As Worksheet
Dim ws_liste_ts As Worksheet
'Row
Dim billing_month As String
Dim row_start_conso As Integer
Dim col_start_conso As Integer
Dim row_end_conso As Integer
Sub consolidate()
Dim path As String
'MsgBox de sélection du répertoire
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.Title = "Veuillez sélectionner le répertoire dans lequel se trouve les TS OPER à consolider :"
fd.Show
If fd.SelectedItems.Count > 0 Then
path = fd.SelectedItems(1)
End If
Set fd = Nothing
If path <> "" Then
Dim directory_files As String
Application.Calculation = xlManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Set ws_liste_ts = ActiveWorkbook.Sheets("Liste_TS")
ws_liste_ts.Range("A2:E1000").Clear
'on écrit dans l'onglet Liste_TS la liste de tous les sous-répertoires et de toutes les TS du répertoire sélectionné ci-dessus
Call liste_ts(path, 2)
Call init_data_conso
Call clear_sheet_conso
'On parcourt la liste des TS de l'onglet Liste_TS
i = 2
While ws_liste_ts.Cells(i, 2) <> ""
If Mid(ws_liste_ts.Cells(i, 2), 1, 3) = "MRT" Then
Call read_file(ws_liste_ts.Cells(i, 2), ws_liste_ts.Cells(i, 3))
End If
i = i + 1
Wend
group_empty_rows (7)
Application.DisplayAlerts = True
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End If
End Sub
Private Sub read_file(file As String, directory As String)
lien = directory + "\" + file
Set oXLApp = Application.Workbooks.Open(lien)
Set ws_closing = oXLApp.Sheets("Closing")
ensemble = oXLApp.Sheets("Timesheet").Range("D12").Value
Call copy_data(row_start_conso, 5, lien, ensemble) 'CHANGE
Call copy_data(row_start_conso + 1, 6, lien, ensemble) 'HSTD
row_start_conso = row_start_conso + 2
oXLApp.Close
Set oXLApp = Nothing
End Sub
Private Sub init_data_conso()
Set ws_conso = ThisWorkbook.ActiveSheet
billing_month = ws_conso.Range("B4").Value
row_start_conso = 7
col_start_conso = 1
row_end_conso = ws_conso.Range("A7:C1000").Find("Total", LookIn:=xlValues).row - 1
End Sub
Private Sub clear_sheet_conso()
ws_conso.Range("A" & row_start_conso & ":AA" & row_end_conso).Value = ""
End Sub
Private Sub copy_data(row_conso, row_closing, lien, ensemble)
ActiveSheet.Hyperlinks.Add Anchor:=ws_conso.Cells(row_conso, col_start_conso), Address:=lien, TextToDisplay:="TS"
ws_conso.Cells(row_conso, col_start_conso + 1).Value2 = ensemble
ws_conso.Cells(row_conso, col_start_conso + 2).Value2 = ws_closing.Cells(row_closing, 3).Value2
ws_conso.Cells(row_conso, col_start_conso + 3).Value2 = ws_closing.Cells(row_closing, 6).Value2
ws_conso.Cells(row_conso, col_start_conso + 4).Value2 = ws_closing.Cells(row_closing, 27).Value2
ws_conso.Cells(row_conso, col_start_conso + 6).Value2 = ws_closing.Cells(row_closing, 28).Value2
ws_conso.Cells(row_conso, col_start_conso + 8).Value2 = ws_closing.Cells(row_closing, 16).Value2
ws_conso.Cells(row_conso, col_start_conso + 9).Value2 = ws_closing.Cells(row_closing, 7).Value2
ws_conso.Cells(row_conso, col_start_conso + 10).Value2 = ws_closing.Cells(row_closing, 8).Value2
ws_conso.Cells(row_conso, col_start_conso + 11).Value2 = ws_closing.Cells(row_closing, 9).Value2
ws_conso.Cells(row_conso, col_start_conso + 12).Value2 = ws_closing.Cells(row_closing, 10).Value2
ws_conso.Cells(row_conso, col_start_conso + 13).Value2 = ws_closing.Cells(row_closing, 11).Value2
ws_conso.Cells(row_conso, col_start_conso + 14).Value2 = ws_closing.Cells(row_closing, 12).Value2
ws_conso.Cells(row_conso, col_start_conso + 15).Value2 = ws_closing.Cells(row_closing, 13).Value2
ws_conso.Cells(row_conso, col_start_conso + 16).Value2 = ws_closing.Cells(row_closing, 14).Value2
ws_conso.Cells(row_conso, col_start_conso + 17).Value2 = ws_closing.Cells(row_closing, 15).Value2
ws_conso.Cells(row_conso, col_start_conso + 19).Value2 = ws_closing.Cells(row_closing, 29).Value2
ws_conso.Cells(row_conso, col_start_conso + 21).Value2 = ws_closing.Cells(row_closing, 18).Value2
ws_conso.Cells(row_conso, col_start_conso + 22).Value2 = ws_closing.Cells(row_closing, 19).Value2
ws_conso.Cells(row_conso, col_start_conso + 24).Value2 = ws_closing.Cells(row_closing, 30).Value2
ws_conso.Cells(row_conso, col_start_conso + 25).Value2 = ws_closing.Cells(row_closing, 4).Value2
ws_conso.Cells(row_conso, col_start_conso + 26).Value2 = ws_closing.Cells(row_closing, 21).Value2
ws_conso.Cells(row_conso, col_start_conso + 27).Value2 = ws_closing.Cells(row_closing, 22).Value2
ws_conso.Cells(row_conso, col_start_conso + 28).Value2 = ws_closing.Cells(row_closing, 23).Value2
End Sub
Private Sub liste_ts(path As String, r As Integer)
Dim FSO As Scripting.FileSystemObject
Dim DossierSource As Scripting.Folder, SousDossier As Scripting.Folder
Dim Fichier As Scripting.file
Set ws = ActiveWorkbook.Sheets("Liste_TS")
Set FSO = New Scripting.FileSystemObject
Set DossierSource = FSO.GetFolder(path)
For Each Fichier In DossierSource.Files
ws.Cells(r, 2) = Fichier.Name
ws.Cells(r, 3) = Fichier.ParentFolder
r = r + 1
Next Fichier
For Each SousDossier In DossierSource.SubFolders
liste_ts SousDossier.path, r
Next SousDossier
Set SousDossier = Nothing
Set Fichier = Nothing
Set DossierSource = Nothing
Set FSO = Nothing
End Sub
Public Sub group_empty_rows(start_row)
' on sélectionne toutes les lignes de la zone pour enlever les groupements
ws_conso.Rows(start_row & ":" & row_end_conso).Select
Selection.Rows.Ungroup
Selection.Rows.Hidden = False
i = row_start_conso
While ws_conso.Cells(i, 3) <> ""
i = i + 1
Wend
ws_conso.Rows(i + 2 & ":" & row_end_conso).Select
Selection.Rows.Group
'on ferme le groupement
ActiveSheet.Outline.ShowLevels RowLevels:=1
ActiveSheet.Range("C4").Select
End Sub |
Partager