=SI(JOURSEM(AUJOURDHUI();2)=1;INDEX('A L AFFICHE'!A1:A52;ALEA.ENTRE.BORNES(1;52));"")
Bonsoir,
A+Code:=SI(JOURSEM(AUJOURDHUI();2)=1;INDEX('A L AFFICHE'!A1:A52;ALEA.ENTRE.BORNES(1;52));"")
Bonjour jokerfidelio, GerardCalc,
Une version en VBA.
Mettre la macro suivante dans le module ThisWorkbook :
Private Sub Workbook_Open()
If Weekday(Date) = 2 Then ' Test si le jour de la semaine est un lundi. Ici 2 représente le lundi.
Randomize
With Sheets("A L AFFICHE")
Lig = .Range("A32000").End(xlUp).Row
Do
T = Int((Lig * Rnd) + 1)
Loop Until .Range("A" & T) <> Sheets("CCT").Range("A1")
Sheets("CCT").Range("A1") = .Range("A" & T)
End With
End If
End Sub
private sub workbook_open()
Dim dWeekday As Double
Dim dRandWeek As Double
' Obtenir le jour de la semaine / Get Week day
dWeekday = Application.WorksheetFunction.Weekday(today, 2)
' Obtenir un nombre au hasard entre 1 & 52 / Get random value from 1 to 52 (weeks)
dRandWeek = Application.WorksheetFunction.RandBetween(1, 52)
' Si c'est un lundi
If dWeekday = 2 Then
' pour récupérer le message depuis une autre colonne, remplacer "A" par la colonne souhaitée.
' to get the message from another column, replace "A" by the desired column letter.
dMessage = Application.WorksheetFunction.Index(AFFICHE.Columns("A").Range("A1:A52"), dRandWeek)
CCT.Range("A1").Value = dMessage
End If
End Sub
bonjour,
J'ai bien aimé la réponse de GerardCalc.
Toutefois, si tu aimerais que le message persiste comme tu l'as laissé entendre dans ta réponse à son message, alors je crois que tu le peux faire qu'avec VBA.
En optant pour un mixage des réponses de GerardCalc et Bernard, tu peux aussi écrire cela :
Code:private sub workbook_open() Dim dWeekday As Double Dim dRandWeek As Double ' Obtenir le jour de la semaine / Get Week day dWeekday = Application.WorksheetFunction.Weekday(today, 2) ' Obtenir un nombre au hasard entre 1 & 52 / Get random value from 1 to 52 (weeks) dRandWeek = Application.WorksheetFunction.RandBetween(1, 52) ' Si c'est un lundi If dWeekday = 2 Then ' pour récupérer le message depuis une autre colonne, remplacer "A" par la colonne souhaitée. ' to get the message from another column, replace "A" by the desired column letter. dMessage = Application.WorksheetFunction.Index(QUALITE.Columns("A").Range("A1:A52"), dRandWeek) CCT.Range("B16").Value = dMessage End If End Sub
Option Explicit
Private Sub WorkBook_Open()
Dim dWeekday As Double
Dim dRandWeek As Double
Dim dMessage As String
' Obtenir le jour de la semaine / Get Week day
dWeekday = WorksheetFunction.Weekday(Date, 2)
' Obtenir un nombre au hasard entre 1 & 52 / Get random value from 1 to 52 (weeks)
dRandWeek = Application.WorksheetFunction.RandBetween(1, 52)
' Si c'est un lundi
If dWeekday = 2 Then
' pour récupérer le message depuis une autre colonne, remplacer "A" par la colonne souhaitée.
' to get the message from another column, replace "A" by the desired column letter.
dMessage = WorksheetFunction.Index(Sheets("QUALITE").Columns("A").Range("A1:A52"), dRandWeek)
Sheets("CCT").Range("B16").Value = dMessage
End If
End Sub
Bonjour à tous,
Peux-tu essayer ceci :
VB:Option Explicit Private Sub WorkBook_Open() Dim dWeekday As Double Dim dRandWeek As Double Dim dMessage As String ' Obtenir le jour de la semaine / Get Week day dWeekday = WorksheetFunction.Weekday(Date, 2) ' Obtenir un nombre au hasard entre 1 & 52 / Get random value from 1 to 52 (weeks) dRandWeek = Application.WorksheetFunction.RandBetween(1, 52) ' Si c'est un lundi If dWeekday = 2 Then ' pour récupérer le message depuis une autre colonne, remplacer "A" par la colonne souhaitée. ' to get the message from another column, replace "A" by the desired column letter. dMessage = WorksheetFunction.Index(Sheets("QUALITE").Columns("A").Range("A1:A52"), dRandWeek) Sheets("CCT").Range("B16").Value = dMessage End If End Sub
A+ à tous
Option Explicit
Private Sub WorkBook_Open()
Dim dWeekday As Double
Dim dRandWeek As Double
Dim dMessage As String
' Obtenir le jour de la semaine / Get Week day
dWeekday = WorksheetFunction.Weekday(Date, 2)
' Obtenir un nombre au hasard entre 1 & 52 / Get random value from 1 to 52 (weeks)
dRandWeek = Application.WorksheetFunction.RandBetween(1, 52)
' Si c'est un lundi
If dWeekday = 2 Then
' pour récupérer le message depuis une autre colonne, remplacer "A" par la colonne souhaitée.
' to get the message from another column, replace "A" by the desired column letter.
dMessage = WorksheetFunction.Index(Sheets("QUALITE").Columns("A").Range("A1:A52"), dRandWeek)
Sheets("CCT").Range("B16").Value = dMessage
End If
End Sub
Option Explicit
Private Sub WorkBook_Open()
Dim dWeekday As Double
dim iWeekno as integer Dim dMessage As String
' Obtenir le jour de la semaine / Get Week day
dWeekday = WorksheetFunction.Weekday(Date, 2)
' Obtenir le numéro de la semaine / Get week no (european ISO norm)
iWeekno=IsoWeekNum(now)
' Si c'est un lundi
If dWeekday = 2 Then
' pour récupérer le message depuis une autre colonne, remplacer "A" par la colonne souhaitée.
' to get the message from another column, replace "A" by the desired column letter.
dMessage = WorksheetFunction.Index(Sheets("QUALITE").Columns("A").Range("A1:A52"), iWeekno)
Sheets("CCT").Range("B16").Value = dMessage
End If
End Sub
Public Function IsoWeekNum(d1 As Date) As Integer
' Provided by Daniel Maher.
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
IsoWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function