C'est vrai que la formule est analysée avant inscription et là elle ne peut pas...
Sub Test()
Dim i%
For i = 2 To 8 Step 2
With Worksheets(i).Range("E5")
.FormulaR1C1 = "=RC[-2]-" & .Worksheet.Previous.Name & "!RC[-2]"
.AutoFill Range("E5:E10639")
End With
Next i
End Sub
C'est le nom de la feuille qu'il faut introduire dans la formule... ! J'utilise Previous car plus court que d'aller chercher l'index...
Ton code remis sur pied avec suppression de tout select et autre élément inutile, variables déclarées, boucle réajustée au besoin, mise sous bloc With permettant de qualifier toutes les expressions incluses dans le bloc et évitant des répétitions...
A noter que si tu ne travailles pas habituellement en style L1C1, il n'est pas utile d'imiter l'enregistreur (qui ne connaît que FormulaR1C1) :
.Formula = "=C5-" & .Worksheet.Previous.Name & "!C5"
sera plus simple à écrire, et plus immédiatement parlant...
Cordialement.