Sub collage()
Dim C1 As Workbook 'déclare la variable C1 (Classuer 1)
Dim C2 As Workbook 'déclare la variable C2 (Classuer 2)
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim TEST As Boolean 'déclare la variable TEST
Set C2 = ThisWorkbook 'définit le classeur C2
Set O2 = C2.Sheets("TABLEAU SUIVI") 'définit l'onglet O2
DL = O2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)
Set PL = O2.Range("S2:S" & DL) 'définit la plage PL
Workbooks.Open "\\chemin d'accès\résutat macro PP.xlsx"
Set C1 = ActiveWorkbook 'définit la classeur C1
Set O1 = C1.Sheets("suivi obs IAE") 'définit l'onglet O1
O1.Unprotect Password:="motdepasse"
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
If Year(CEL.Value) = 2014 Then 'condition : si l'année de la valeur de la cellule CEL est égale à 2014
Set DEST = IIf(O1.Range("A1") = "", O1.Range("A1"), O1.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)) 'définit la cellule de destination DEST
O2.Range(O2.Cells(CEL.Row, 1), O2.Cells(CEL.Row, 7)).Copy DEST 'copie la plage A1:G1 de la cellule et la colle dans DEST (je ne comprends pas cette ligne puisqu'on l'écrase par la suite...)
O2.Range(O2.Cells(CEL.Row, 4), O2.Cells(CEL.Row, 8)).Copy DEST 'copie la plage D1:H1 de la cellule et la colle dans DEST
O2.Range(O2.Cells(CEL.Row, 19), O2.Cells(CEL.Row, 20)).Copy DEST.Offset(0, 5) 'copie la plage S1:T1 de la cellule et la colle dans DEST décalée de 5 colonnes à droite (=colonne F)
TEST = True 'définit la variable TEST
End If 'fin de la condition
If TEST = True Then GoTo suite 'si test est vrai la ligne a déja été copiée, va à l'étiquette "suite"
If Year(CEL.Offset(0, 1).Value) = 2014 Then 'condition : si l'année de la valeur de la cellule CEL décalé d'une colonne à droite (=colonne T) est égale à 2014
Set DEST = IIf(O1.Range("A1") = "", O1.Range("A1"), O1.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)) 'définit la cellule de destination DEST
O2.Range(O2.Cells(CEL.Row, 1), O2.Cells(CEL.Row, 7)).Copy DEST 'copie la plage A1:G1 de la cellule et la colle dans DEST (je ne comprends pas cette ligne puisqu'on l'écrase par la suite...)
O2.Range(O2.Cells(CEL.Row, 4), O2.Cells(CEL.Row, 8)).Copy DEST 'copie la plage D1:H1 de la cellule et la colle dans DEST
O2.Range(O2.Cells(CEL.Row, 19), O2.Cells(CEL.Row, 20)).Copy DEST.Offset(0, 5) 'copie la plage S1:T1 de la cellule et la colle dans DEST décalée de 5 colonnes à droite (=colonne F)
End If 'fin de la condition
suite: 'étiquette
TEST = False 'réinitialise la variable test
Next CEL 'prochaine cellule de la boucle
O1.Protect Password:="motdepasse", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
C1.Close SaveChanges:=True
C2.Save
End Sub