Bonjour,
Une fonction perso. Avec "Application.Volatile", la fonction sera recalculée à chaque calculs dans la feuille comme pour les fonction Alea(), Maintenant(), etc... Cette fonction est matricielle, donc, sélectionner les 7 cellules verticales et dans la barre de formule, entrer =JOURALEA() puis valider avec Ctrl+Maj+Entrée. Si tu veux les jours sur une ligne, utilise la fonction Transpose() de cette façon =TRANSPOSE(JOURALEA()) toujours en ayant sélectionné les 7 cellules et en validant en matricielle :
Function JOURALEA() As String()
Dim Tbl(1 To 7, 1 To 2) As String
Dim Dico As Object
Dim Cle
Dim Jour As String
Dim I As Integer
'à chaque calcul dans la feuille, la fonction est appelée
Application.Volatile
Randomize
Set Dico = CreateObject("Scripting.Dictionary")
Do
Jour = WeekdayName(Int(Rnd() * 7 + 1), False, vbMonday)
Dico(Jour) = ""
Loop Until Dico.Count = 7
For Each Cle In Dico.Keys
I = I + 1: Tbl(I, 1) = Cle
Next Cle
JOURALEA = Tbl
End Function
Un classeur exemple :