Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim col As Byte 'déclare la variable col (COLonne)
Dim dest As Range 'déclare la variable dest (cellule de Destination)
With Sheets("exemple avant") 'prend en compte l'onglet "exemple avant" (tu adapteras à ton cas)
For Each cel In .Range("B25:B64") 'boucle 1 : sur toutes les cellules cel de la plage B25:B64
For col = 5 To 56 'boucle 2 : sur toutes les semaines
If .Cells(cel.Row, col).Value <> "" Then 'condition : si la cellule sur la même ligne que cel en colonne col n'est pas vide
'définit la cellule de destination (en fonction de l'onglet incrit dans la cellule et de la colonne col
Set dest = Sheets(Cells(cel.Row, col).Value).Cells(Application.Rows.Count, col).End(xlUp).Offset(1, 0)
dest.Value = cel.Value 'place dans dest le nom incrit dans cel
End If 'fin de la condition
Next col 'prochaine semaine de la boucle 2
Next cel 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "exemple avant"
End Sub