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
| Option Explicit
Sub Project_Progress()
Dim WkPath As String
Dim File As String
Dim Fname As String
Dim WBK1 As Workbook
Dim WBKDest As Workbook
Dim Wk As Worksheet
Dim Baseline As Worksheet
Dim Actual As Worksheet
Dim Curv As Worksheet
Dim WKS As Range
Dim Bsl As Range
Dim Act As Range
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim NumbCell As Integer
Set Wk = ThisWorkbook.Sheets("Main")
Set Baseline = ThisWorkbook.Sheets("Baseline")
Set Actual = ThisWorkbook.Sheets("Actual")
Set Curv = ThisWorkbook.Sheets("Curve")
Set WKS = Wk.Range("A1")
Set Bsl = Baseline.Range("A1")
Set Act = Actual.Range("A1")
WKS = WKS.Offset(0)
Bsl = Bsl.Offset(0)
Act = Act.Offset(0)
WkPath = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
File = Dir(WkPath)
Wk.Range("A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address).ClearContents ' On efface toute les données
'La 1ère boucle ci_dessous va rechercher tous les fichiers du répertoire
'et coller les résultats dans la colonne C
Do While File <> ""
i = i + 1
Wk.Range("C" & i) = File
File = Dir
Loop
i = 0
'La deuxième boucle recherche les fichiers dont le nom contient PACKAGE et les colle en colonne A
Do While WKS.Offset(i, 2) <> ""
If WKS.Offset(i, 2) Like "*PACKAGE*" Then
WKS.Offset(j, 0) = WKS.Offset(i, 2)
End If
i = i + 1
If WKS.Offset(j, 0) = 0 Then
j = j
Else
j = j + 1
End If
Loop
'Ici on va effacer les données de la colonne C
Wk.Range("C1:" & Range("C1").SpecialCells(xlCellTypeLastCell).Address).ClearContents
Application.DisplayAlerts = False
With Sheets("Main")
NumbCell = .Cells(.Rows.Count, 1).End(xlUp).Row - 1 ' On compte le nombre de fichiers présents en colonne A
End With
j = 0
Set WBKDest = ThisWorkbook
For i = 0 To NumbCell
Fname = WKS.Offset(i, 0) 'Donne le nom du fichier à ouvrir
' Copie des données de la baseline
Workbooks.Open WkPath & Fname 'ouvre le fichier
Set WBK1 = ActiveWorkbook
Dim Data As Worksheet 'déclaration des varibles du fichier ouvert
Dim Dest As Range
Set Data = WBK1.Sheets("Data")
Set Dest = Data.Range("J6")
'Dest = Dest.Offset(0)
Range(Dest, Dest.End(xlToRight).End(xlDown)).Copy ' Copie des données
WBK1.Close 'Fermeture du classeur
Set WBKDest = ActiveWorkbook
Bsl.Offset(j, 0).PasteSpecial 'Colle les données dans le classeur origine
'Copie des Données Actual
Workbooks.Open WkPath & Fname
Set WBK1 = ActiveWorkbook 'ouvre le fichier
Dim Data2 As Worksheet 'déclaration des varibles du fichier ouvert
Dim Dest2 As Range
Set Data2 = WBK1.Sheets("Data")
Set Dest2 = Data2.Range("J12")
Dest2 = Dest2.Offset(0)
Range(Dest2.Offset(0, 0), Dest2.Offset(0, 0).End(xlToRight).End(xlDown)).Copy ' Copie des données
WBK1.Close
Set WBKDest = ActiveWorkbook
Act.Offset(j, 0).PasteSpecial 'Colle les données dans le classeur origine
j = j + 6
k = k + 1
Next i
Application.ScreenUpdating = True
End Sub |
Partager