Après plusieurs test, cela semble impossible sur un contrôle de formulaire.
Cependant sur un contrôle ActivX cela marche très bien !
Voici le code que j'ai utilisé :
Private Sub CommandButton1_Click()
CommandButton1.ForeColor = vbRed
DoEvents
i = 0
Do While i <> 50000000
i = i + 1
Loop
CommandButton1.ForeColor = vbBlack
DoEvents
End Sub