Sub Synthèse()
Dim OS As Worksheet 'déclare la variable OS (Onglet Synthèse)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim PL As Range 'déclare la variable PL (PLage)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OS = Worksheets("SYNTHESE") 'définit l'onglet OS
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OS
Range("A5:K" & DL).ClearContents 'supprime les anciennes valeurs
Range("A5:K" & DL).Interior.ColorIndex = xlNone 'supprime les anciennes couleurs
Set PL = OS.Range("A1") 'initilise la plage PL
For Each O In Sheets 'boucle 1 : sur tous les onlget O du classeur
If Not O.Name = "SYNTHESE" Then 'condition 1 : si le nom de l'onglet n'est pas "SYNTHESE"
TV = O.Range("A4").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 10) <> "Terminé" Then 'condition 2 : si la donnée ligne I colonne 10 de TV n'est pas égale à "Terminé"
'redéfinit la plage PL comme (soit la ligne I des données, soit l'union de la plage PL et de la ligne I des données)
If PL.Cells.Count = 1 Then Set PL = O.Cells(I + 3, "A").Resize(1, 10) Else Set PL = Application.Union(PL, O.Cells(I + 3, "A").Resize(1, 10))
End If 'fin de la condition 2
Next I 'prochaine ligne de la boucle 2
Set DEST = OS.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
PL.Copy DEST 'copie la plage PL dans DEST
Set PL = OS.Range("A1") 'réinitialise la plage PL
End If 'fin de la condition 1
Next O 'prochaoine onglet de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub