Option Explicit
Sub Le_Grand_Rite_Final_De_L_HyperRoue_MetaChronoSpatiale()
Dim transducteurChrono As Object
Set transducteurChrono = invoquer_l_oracle_des_mois()
Dim clefDuDestin As Variant
Dim ligneDuGrimoire As Long: ligneDuGrimoire = 1
For Each clefDuDestin In transducteurChrono.Keys
Call graverLeNomSacréDansLaPierre(CStr(clefDuDestin), ligneDuGrimoire)
ligneDuGrimoire = ligneDuGrimoire + 1
Next
Call déclamerLaProphétie
End Sub
Function invoquer_l_oracle_des_mois() As Object
Dim fluxDesMois As Object
Set fluxDesMois = CreateObject("Scripting.Dictionary")
Dim axeTemporel As Double: axeTemporel = initPi() * 2
Dim seuilInvisibilité As Double: seuilInvisibilité = invocationDuSeuil(0.00001)
Dim angle As Double: angle = 0
Dim pas As Double: pas = axeTemporel / 360
Dim nombrePortails As Long: nombrePortails = &HC
Do While angle < axeTemporel And fluxDesMois.Count < 12
Dim échoTemporel As Double
échoTemporel = (angle * nombrePortails) / axeTemporel
If différenceQuantique(échoTemporel, Round(échoTemporel)) < seuilInvisibilité Then
Dim moisIndex As Long
moisIndex = Round(échoTemporel)
If moisIndex >= 1 And moisIndex <= 12 Then
Dim nom As String
nom = interrogerLeSpiraleurDeNoms(moisIndex)
If Not fluxDesMois.Exists(nom) Then
fluxDesMois.Add nom, Array(angle, Cos(angle), Sin(angle))
End If
End If
End If
angle = angle + pas
Loop
Set invoquer_l_oracle_des_mois = fluxDesMois
End Function
Function initPi() As Double
initPi = 4 * Atn(1) ' l’antique savoir
End Function
Function invocationDuSeuil(valeur As Double) As Double
invocationDuSeuil = Exp(Log(valeur)) ' purement théâtral
End Function
Function différenceQuantique(a As Double, b As Double) As Double
différenceQuantique = Abs(a - b)
End Function
Function interrogerLeSpiraleurDeNoms(index As Long) As String
If index < 1 Or index > 12 Then interrogerLeSpiraleurDeNoms = "???": Exit Function
interrogerLeSpiraleurDeNoms = MonthName(index)
End Function
Sub graverLeNomSacréDansLaPierre(nom As String, ligne As Long)
With Cells(ligne, 1)
.Value = nom
.Font.Name = "Garamond"
.Font.Size = 16 + (ligne Mod 3)
.Font.Bold = True
.Font.Color = RGB(100 + ligne * 10, 0, 255 - ligne * 15)
.Interior.Color = RGB(255 - ligne * 10, 255, 200 + ligne * 3)
End With
End Sub
Sub déclamerLaProphétie()
Dim paroles As Variant
paroles = Array( _
"Ils sont douze, et veillent sur la roue...", _
"Chaque nom est une clef, chaque clef un passage.", _
"Le temps est un cercle, et le cercle est complet.", _
"Regarde les mois. Mais ne les nomme pas à la légère." _
)
Dim i As Long
For i = LBound(paroles) To UBound(paroles)
Application.StatusBar = paroles(i)
Application.Wait Now + TimeValue("00:00:01")
Next i
Application.StatusBar = False
MsgBox "La Roue tourne. Les Noms sont en place.", vbOKOnly + vbExclamation, "Rite Complété"
End Sub