dim iWeekno as integer Dim dMessage As String[/COLOR]
[COLOR=#333333]dim iWeekno as integer
Dim dMessage As String
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
doit êtredim iWeekno as integer Dim dMessage As String
Dim iWeekno as integer, dMessage As String
Private Sub WorkBook_Open()
If Weekday(Date) = 2 Then
If Sheets("CCT").[B15] = "» essai 52" Then Sheets("CCT").[B15] = "» essai 1": Exit Sub
Sheets("CCT").[B15] = Feuil2.[A:A].Find([B15], , , 1)(2, 1)
End If
End Sub
ton fichier "Briefing v1" avec test aléatoire marche très bien chez moi (il m'a juste suffit de changer la condition testant le jour de la semaine à 3 pour Mercredi).
le seul problème, en cas de test aléatoire, serait si le fichier était ouvert plusieurs fois par jour.
C'est quand même à toi de le décider !OUI effectivement le fichier sera ouvert plusieurs par jour !
faut il prendre cette variable en considération ? et que faut il modifier pour cela ?
Private Sub WorkBook_Open()
Sheets("CCT").Select
If Weekday(Now) = 5 Then _
[B15] = [T].Rows(Application.RandBetween(1, 52))
End Sub
Private Sub WorkBook_Open()
Sheets("CCT").Select
If Weekday(Now) = 5 And [E7] = "" Then _
[B15] = [T].Rows(Application.RandBetween(1, 52)): [E7] = " "
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
[E7] = ""
End Sub
Re (et merci pour le retour)
C'est quand même à toi de le décider !
Pour un tirage aléatoire à chaque ouverture
Code:Private Sub WorkBook_Open() Sheets("CCT").Select If Weekday(Now) = 5 Then _ [B15] = [T].Rows(Application.RandBetween(1, 52)) End Sub
Pour un tirage aléatoire unique par jour (ouvertures multiples ou pas)
T est le nom du tableau des textes et [E7] car cette cellule est masquée par l'image.Code:Private Sub WorkBook_Open() Sheets("CCT").Select If Weekday(Now) = 5 And [E7] = "" Then _ [B15] = [T].Rows(Application.RandBetween(1, 52)): [E7] = " " End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) [E7] = "" End Sub
J'ai mis 5 (pour tester ce jour (jeudi).
Attention, le résultat ne sera pas le même si on ne veut pas de doublon au tirage (autre programmation dans ce cas).