Sub ChangerGraine(Optional ByVal Cible = "!Graine")
   Static DernH As Double: Dim H As Double
Rem. Change la graine utilisée pour les tirages aléatoire.
'  Argument Cible facultatif. Si omis, "!Graine" est assumé. 2 cas :
'     1) — Un String indiquant le nom de la graine. S'il commence par un point d'exclamation,
'          la suite indique un nom dans la feuille active, sinon le tout est un nom dans le classeur
'          Ce nom peut avoir comme référence une cellule contenant la graine ou directement sa valeur.
'          Si le nom n'existe pas, il est créé comme ayant pour référence la valeur.
'     2) — Un Range représentant la cellule devant contenir la graine
'  Remarque: Pour afficher cette graine, le format de cellule "jjjj hh:mm:ss" est assez pertinent,
'     parce que la graine sera l'heure courante au jour de la semaine seulement. Now aurait en effet
'     trop de bits significatifs pour pouvoir être considérée à la seconde près en le type de donnée
'     Single utilisé par la procédure Randomize et renvoyé par la fonction Rnd.
   H = Date Mod 7 + Time: If H = 0 Then H = 7
   If H = DernH Then H = H + 2 ^ -19
   DernH = H
   If TypeOf Cible Is Range Then Cible.Value = H: Exit Sub
   If VarType(Cible) <> vbString Then MsgBox "Argument de type """ & TypeName(Cible) & """ incorrect.", _
      "Spécifiez une cellule ou un nom pour la feuille ou le classeur.", _
      vbCritical, "ChangerGraine": Exit Sub
   On Error Resume Next
   If Left$(Cible, 1) = "!" Then
      If TypeOf ActiveSheet.Evaluate(Mid$(Cible, 2)) Is Range Then
         ActiveSheet.Evaluate(Mid$(Cible, 2)).Value = H
      Else
         ActiveSheet.Names.Add Mid$(Cible, 2), H
         If Err Then MsgBox "Err " & Err.Number & " lors de :" _
            & vbLf & "ActiveSheet.Names.Add """ & Mid$(Cible, 2) & """, " & H _
            & vbLf & Err.Description, vbExclamation, "ChangerGraine"
         End If
   Else
      If TypeOf Application.Evaluate(Cible) Is Range Then
         Application.Evaluate(Cible).Value = H
      Else
         ActiveWorkbook.Names.Add Cible, H
         If Err Then MsgBox "Err " & Err.Number & " lors de :" _
            & vbLf & "ActiveWorkbook.Names.Add """ & Cible & """, " & H _
            & vbLf & Err.Description, vbExclamation, "ChangerGraine"
         End If
      End If
   End Sub