Sub Macro1()
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 (DESTination)
Dim o As Worksheet 'déclare la variable o (Onglet)
With Sheets("Report Past") 'prend en compte l'onglet "Report Past"
Set pl = .Range("E2:E" & .Range("E2").End(xlDown).Row) 'de'finit la plage pl
End With 'fin de la prise en compte l'onglet "Report Past"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
On Error Resume Next 'gestion des erreurs, si une erreur est générée passe à la ligne suivante
'prend en compte l'onglet indiqué dans cel (génère une erreur si l'onglet n'existe pas)
With Sheets(cel.Value & " List")
If Err > 0 Then 'condition : si une erreur est générée
Err = 0 'annule l'erreur
Sheets.Add 'ajoute un nouvel onglet
ActiveSheet.Name = cel.Value & " List" 'nomme l'onglet
Sheets("Report Past").Rows("1:1").Copy 'copie la première ligne
'colle la largeur des colonne
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'colle les valeurs
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Range("A2").Select 'sélectionne la cellule A2
ActiveSheet.Move Before:=Sheets("RESULTS") 'place le nouvel onglet avant l'onglet Resuslt
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
End With 'fin de la prose en compte de l'onglet indiqué dans cel
Set o = Sheets(cel & " List") 'définit l'onglet o
'définit la cellule de destination
Set dest = o.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
cel.EntireRow.Copy dest 'copie et colle la ligne dans la cellule de destination
Next cel 'prochaine cellule cel de la boucle
End Sub