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
| Sub Mise_à_jour_REPORTING()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CC As Workbook 'déclare la variable CC (Classeur Cible)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cible)
Dim JourJ As Integer
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PremLigne As Long
Dim DerLigne As Long
Dim I As Byte
Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CS.Sheets("Tréso") 'définit l'onglet source OC
DL = OS.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet OS
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la aligne suivante)
Set CC = Workbooks("REPORTING.xlsx") 'définit le classeur cible CC (génère une erreur si ce classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
Workbooks.Open Filename:="C:\Test\REPORTING.xlsx" 'ouvre le fichier "REPORTING.xlsx"
Set CC = ActiveWorkbook 'définit le classeur cible CC
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set OC = CC.Sheets("Tréso") 'définit l'onglet cible OC
JourJ = Weekday(OS.Range("A2"), 2) 'définit la variable jourJ
Set PL = OS.Range("A2:L" & DL) 'définit la plage PL
PL.Copy 'copie la plage PL
'colle les valeursdans la première cellule vide de la colonne A de l'onglet OC
OC.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
If JourJ = 5 Then 'condition si le JourJ est égal à 5
For I = 1 To 2 'boucle de 1 à 2
PremLigne = OC.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1 'définit la variable PremLigne
DerLigne = PremLigne + PL.Rows.Count - 1 'définit la variable DerLigne
PL.Copy 'copie la plage PL
OC.Cells(PremLigne, 1).PasteSpecial (xlPasteValues) 'colle les valeurs dans la cellule ligne PremLigne colonne A de l'onglet OC
With OC.Cells(PremLigne, 1) 'prend en compte la cellule ligne PremLigne colonne A de l'onglet OC
.Value = .Value + I 'définit la valeur de la cellue
'définit le remplissage automatique
.AutoFill Destination:=OC.Range(OC.Cells(PremLigne, 1), OC.Cells(DerLigne, 1)), Type:=xlFillCopy
End With 'fin de la prise en compte de la cellule ligne PremLigne colonne A de l'onglet OC
Next I 'prochaine valeur de la boucle
End If 'fin de la condition
End Sub |