'### Constantes à adapter ###
Const FEUILLE_LISTE As String = "Feuil1"
Const FEUILLE_FORMS As String = "Feuil2"
'############################
Sub EmploiDuTemps()
Dim S As Worksheet
Dim S2 As Worksheet
Dim R As Range
Dim R2 As Range
Dim var1
Dim var2
Dim g&
Dim h&
Dim i&
Dim cpt&
Dim lig&
Dim A$
Dim T()
Set S = Sheets(FEUILLE_LISTE)
Set R = S.[a1].CurrentRegion
var1 = R
Set S2 = Sheets(FEUILLE_FORMS)
Set R2 = S2.[a1].CurrentRegion
var2 = R2
Set S = Sheets.Add(after:=Sheets(Sheets.Count))
Set R = S.[a1]
R2.Rows(1).Copy Destination:=R
For g& = 2 To UBound(var2, 1) Step 3
  If g& = 2 Then
    Set R = S.Range("a" & g& & "")
  Else
    Set R = S.Range("a" & S.UsedRange.Rows.Count + 2 & "")
  End If
  R2.Rows("" & g& & ":" & g& + 2 & "").Copy Destination:=R
  lig& = S.UsedRange.Rows.Count + 1
  For h& = 2 To UBound(var2, 2)
    cpt& = 0
    Erase T
    A$ = var2(g& + 2, h&)
    If A$ <> "" Then
      For i& = 2 To UBound(var1, 1)
        If var1(i&, 3) = 1 And var1(i&, 2) = A$ Then
          cpt& = cpt& + 1
          ReDim Preserve T(1 To 1, 1 To cpt&)
          T(1, cpt&) = var1(i&, 1)
        End If
      Next i&
    End If
    If cpt& > 0 Then
      Set R = S.Range(S.Cells(lig&, h&), S.Cells(lig& + cpt& - 1, h&))
      R = WorksheetFunction.Transpose(T)
    End If
  Next h&
Next g&
End Sub