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 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218
|
Private Sub OCAGE_Click()
' Déclaration des variables
Dim datemacro As String
Dim semainemacro As String
Dim repertoire As String
Dim ocage As String
Dim ochla As String
Dim rapport As String 'Nom complet avec le chemin du rapport Ocage
Dim oldrapport As String 'Nom complet avec le chemin du rapport Ocage qui pointera sur l'ancien rapport
Dim wbrapport As Excel.Workbook 'Variable indiquant le classeur Excel du fichier analyse
Dim wsrapport As Excel.Worksheet 'Variable indiquant la feuille dans le classeur Excelde la répartition des CIC
Dim wboldrapport As Excel.Workbook
Dim liaison As Variant
Dim oFD As Object 'Variable pour la fenêtre de sélection du fichier de log
Dim fichier As String 'fichier csv d'entrée
Dim sheetname As String
Dim cpt As Integer 'Compteur de ligne du fichier de log
Const Sep = ";" 'Séparateur des champs dans le fichier de log
Dim Tablo() As String 'Tableau temporaire qui stockera chaque ligne du fichier de log
Dim Recup As String 'Variable qui contiendra la ligne du fichier de log
Dim NEname As String
Dim wsrapportname As String
Dim listeNE(7) As String
Dim NEindex As Integer
' Variables pour définir le classeur excel courant (celui-ci)
Dim wbanalyse As Excel.Workbook
Dim wstemp As Excel.Worksheet
Set wbanalyse = ThisWorkbook
' Variables pour les boucles
Dim i As Integer
' Initialisation des variables
repertoire = "D:\Maximilien\Rapports\Ocage\"
datemacro = InputBox("Entrez date de l'interrogation OCAGE", "Macro OCAGE")
semainemacro = InputBox("Entrez la semaine l'interrogation OCAGE", "Macro OCAGE")
ocage = repertoire & "sources\ocage\final\" & datemacro & "\"
ochla = repertoire & "sources\ochla\final\" & semainemacro & "\"
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
'Ajoute les filtres pour fichiers textes et tous
With .Filters
.Clear
.Add "Classeur Excel", "*.xls", 1
.Add "Tous", "*.*", 2
End With
'Aucun nom de fichier par défaut
.InitialFileName = "D:\Maximilien\Rapports\Ocage\rapports"
'Interdit la multi sélection
.AllowMultiSelect = False
'Affiche la fenêtre et vérifie qu'un fichier a bien été choisi
If .Show Then
'Récupère le nom du fichier de log choisi dans la variable "fichier"
rapport = .SelectedItems(1)
End If
End With
' Ouvre l'ancien rapport et le sauve dans un nouveau nom
Set wbrapport = Workbooks.Open(rapport)
oldrapport = rapport
' Sauvegarde du Workbook à la date actuelle
wbrapport.SaveAs repertoire & "rapports\" & "SFR_Mobile_OCAGE_" & semainemacro & ".xls"
listeNE(0) = "CT001"
listeNE(1) = "CT010"
listeNE(2) = "CT032"
listeNE(3) = "CT044"
listeNE(4) = "CT066"
listeNE(5) = "CT197"
listeNE(6) = "CT198"
listeNE(7) = "CT199"
NEindex = 0
For NEindex = 0 To 7
' *******************************************
' Traitement des feuilles de données des CT
' Initialisation des variables
NEname = listeNE(NEindex)
wsrapportname = "Data " & NEname
' Effacement des anciennes données
Set wsrapport = wbrapport.Sheets(wsrapportname)
wsrapport.Visible = xlSheetVisible
wsrapport.Range("A2", "B400").ClearContents
wsrapport.Range("F2", "AE400").ClearContents
' Paramétrage du comportement
Application.ScreenUpdating = False
' ------------------------
' Import des données OCHLA
' Effacement de l'onglet "temp" du classeur de macro s'il existe
Application.DisplayAlerts = False
On Error Resume Next
wbanalyse.Worksheets("temp").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'On créé un onglet "temp" dans lequel on importera le fichier de log
wbanalyse.Worksheets.Add(after:=Worksheets("Index")).Name = "temp"
Set wstemp = wbanalyse.Sheets("temp")
'On importe le fichier de log OCHLA au format CSV dans l'onglet "temp"
fichier = ochla & NEname & "_" & semainemacro & ".csv"
Application.ScreenUpdating = False
cpt = 0
Open fichier$ For Input Access Read As #1
Do Until EOF(1)
Input #1, Recup
Tablo = Split(Recup, Sep)
For i = 0 To 1
wstemp.Range("A1").Offset(cpt, i) = Tablo(i)
Next i
cpt = cpt + 1
Loop
Close #1
' Copie des données OCHLA dans le rapport
wstemp.Activate
wstemp.Range("A1", "B400").Select
Selection.Copy
wsrapport.Activate
wsrapport.Range("A2").Select
ActiveSheet.Paste
' ------------------------
' Import des données OCAGE
' Effacement de l'onglet "temp" du classeur de macro s'il existe
Application.DisplayAlerts = False
On Error Resume Next
wbanalyse.Worksheets("temp").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'On créé un onglet "temp" dans lequel on importera le fichier de log
wbanalyse.Worksheets.Add(after:=Worksheets("Index")).Name = "temp"
Set wstemp = wbanalyse.Sheets("temp")
'On importe le fichier de log OCAGE au format CSV dans l'onglet "temp"
fichier = ocage & NEname & "_OCAGE_" & datemacro & ".csv"
Application.ScreenUpdating = False
cpt = 0
Open fichier$ For Input Access Read As #1
Do Until EOF(1)
Line Input #1, Recup
Tablo = Split(Recup, ";")
For i = 0 To UBound(Tablo)
If (i = 7 And Tablo(i) <> "") Then
wstemp.Range("A1").Offset(cpt, i) = CDbl(Tablo(i))
ElseIf (i = 16 And Tablo(i) <> "") Then
wstemp.Range("A1").Offset(cpt, i) = CDbl(Tablo(i))
ElseIf (i = 25 And Tablo(i) <> "") Then
wstemp.Range("A1").Offset(cpt, i) = CDbl(Tablo(i))
ElseIf (i = 1 And Tablo(i) <> "") Then
wstemp.Range("A1").Offset(cpt, i) = CDate(Format(Tablo(i), "dd/MMM/yyyy"))
ElseIf (i = 10 And Tablo(i) <> "") Then
wstemp.Range("A1").Offset(cpt, i) = CDate(Format(Tablo(i), "dd/MMM/yyyy"))
ElseIf (i = 19 And Tablo(i) <> "") Then
wstemp.Range("A1").Offset(cpt, i) = CDate(Format(Tablo(i), "dd/MMM/yyyy"))
Else
wstemp.Range("A1").Offset(cpt, i) = Tablo(i)
End If
Next i
cpt = cpt + 1
Loop
Close #1
' Copie des données OCAGE dans le rapport
wstemp.Activate
wstemp.Range("A1", "Z400").Select
Selection.Copy
wsrapport.Activate
wsrapport.Range("F2").Select
ActiveSheet.Paste
wsrapport.Range("A1").Select
Application.Goto wsrapport.Range("A1"), Scroll:=True
' Set wsrapport = wbrapport.Sheets(wsrapportname)
wsrapport.Visible = xlSheetHidden
Next NEindex
' Effacement de l'onglet "temp" du fichier Analyse.xls
Application.DisplayAlerts = False
On Error Resume Next
wbanalyse.Worksheets("temp").Delete
On Error GoTo 0
Application.DisplayAlerts = True
' selection de la feuille "index" du rapport en fin d'opération
Set wsrapport = wbrapport.Sheets("index")
wsrapport.Activate
wsrapport.Range("A1").Select
' Mise à jour de la liaison avec l'ancien rapport
Set wboldrapport = Workbooks.Open(oldrapport)
wbrapport.Activate
liaison = ActiveWorkbook.LinkSources
ActiveWorkbook.ChangeLink liaison(1), oldrapport, xlExcelLinks
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
wboldrapport.Close
wbrapport.Save
MsgBox "Mise à jour du rapport OCAGE Terminé", vbInformation
End Sub |
Partager