Sub alea()
'récupère le nombre le lignes du tableau de la feuille active
nb = Range("P65536").End(xlUp).Row
'si en P3, il y a une formule (celle avec alea) alors
If Range("P3").HasFormula Then
'on copie colle special valeurs
Range("P3:P" & nb).Copy
Range("P3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
'sinon: il faut remettre la formule
formule = "=SI(ET(A3<>"""";H3<>"""");ALEA();0)"
[P3].FormulaLocal = formule
Range("P3:P" & nb).FillDown
End If
End Sub