Texte aléatoire tous les lundi

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Texte aléatoire tous les lundi

Bonjour a tous

apres plusieurs essai positif tout etait fonctionnel ou presque !

mais depuis hier impossible de faire fonctionner le code correctement

j'ai pourtant controlé :

If dWeekday = 7 Then
pour que le resultats change a chaque ouverture de fichier, mais rien toujours le même texte !

et le dernier code non aleatoire ne fonctionne plus non plus :

Code:
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

je suis perdu j'ai meme change de version excel mais toujours aucun resultat !!!

en piece jointe le fichier correspondant
 

Pièces jointes

Dernière édition:
Re : Texte aléatoire tous les lundi

salut

sans variable, à tester
Code:
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

Attention à la cellule variable (une fois B16, puis B15) et quand on arrive au bout !
 
Re : Texte aléatoire tous les lundi

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.
 
Re : Texte aléatoire tous les lundi

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.

OUI effectivement le fichier sera ouvert plusieurs par jour !
faut il prendre cette variable en considération ? et que faut il modifier pour cela ?

cdlt
 
Re : Texte aléatoire tous les lundi

Re (et merci pour le retour)
OUI effectivement le fichier sera ouvert plusieurs par jour !
faut il prendre cette variable en considération ? et que faut il modifier pour cela ?
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)
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
T est le nom du tableau des textes et [E7] car cette cellule est masquée par l'image.
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).
 
Re : Texte aléatoire tous les lundi

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)
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
T est le nom du tableau des textes et [E7] car cette cellule est masquée par l'image.
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).

Merci a toi Si...

Apres plusieurs essais, pour aller au plus simple :

- a chaque ouverture du fichier, tous les lundi de l'année 1 message en (B15)
- ce message visible toute la semaine jusqu'au lundi suivant (même avec ouverture multiples toute la semaine)
- EX : message dans cellule A46 ----> message pour la semaine 46 et ainsi de suite jusque semaine 52
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
37
Affichages
1 K
Réponses
0
Affichages
280
Réponses
17
Affichages
1 K
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
418
Retour