Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
est t'il possible d'avoir une formule ou du vba,pour insérer un texte aléatoire tous les lundi de l'année ?
et mettre le résultat dans une autre feuille ?
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
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
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(AFFICHE.Columns("A").Range("A1:A52"), dRandWeek)
CCT.Range("A1").Value = dMessage
End If
End Sub
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
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
y a t'il la possibilité de, non pas de faire un aléatoire, mais de forcer une distribution toujours de 1 a 52 mais cette fois ci dans l'ordre
et toujours les lundi :
Code:
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
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
- 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