Bonjour,
J'utilise une macro pour faire une rotation entre deux feuilles automatiquement, ce qui me permet d'afficher en continue ces deux feuilles sur un écran de télévision avec un intervalle choisi en fonction de ma convenance.
L'un d'entre vous m'avez déjà donné un bon coup de main pour faire cette macro, j'ai juste ajouté 1 ou 2 lignes pour qu'elle me convienne parfaitement.
Globalement pour la résumer:
Si on est le lundi/mardi/mercredi alors rotation Feuille 1 (30sec) ensuite switch sur Feuille 2 (1sec) et reswitch sur Feuille 1 ()
Cette première étape de rotation sert juste à actualiser mes TCD sur la feuille 1 car il s'actualise lors de l'activation de ma feuille.
En revanche, si nous sommes un jour supérieur mercredi alors Feuille 1 (30sec) ensuite switch sur Feuille 2 (30sec) et ainsi de suite, là pour le coup les informations sur la feuille 2 m'intéressent vraiment c'est pourquoi je veux qu'elle apparaisse 30 secondes.
Ce que je souhaite ajouter sur cette macro c'est un test à chaque rotation du jour actuel.
Le problème c'est que là le jeudi matin, elle a pas pris en compte que nous étions jeudi car je laisse allumer le pc pendant la semaine entière et l'activation de la macro date du lundi.
Donc la macro a bien vu que nous étions lundi le jour du lundi mais après elle ne va plus jamais retester le jour.
J'espère avoir été claire, et je vous remercie par avance pour votre aide.
Bien cordialement
Pierre
' Identification du Timer : important pour le désactiver
Public RotationId As Date
Public RotationId2 As Date
Public RotationId3 As Date
Sub Start_Rotation()
' On lance la rotation
' Si le jour est jeudi/vendredi/samedi/dimanche
If Weekday(Now, vbMonday) >= 4 Then
Rotation
Else
Rotation2
End If
End Sub
Sub Stop_Rotation()
' On supprime la tache horaire de Rotation
If RotationId > 0 Then
Application.OnTime RotationId, "Rotation", , False
Application.StatusBar = ""
RotationId = Empty
ElseIf RotationId2 > 0 Then
Application.OnTime RotationId2, "Rotation2", , False
Application.StatusBar = ""
RotationId2 = Empty
End If
End Sub
Sub Rotation()
' Liste des feuilles à afficher
Dim Fls() As Variant
Fls = Array("TDB S+1", "TDB S")
' On active la feuille qui n'est pas actuellement affichée (flip/flop)
ThisWorkbook.Sheets(IIf(ActiveSheet.Name = Fls(0), Fls(1), Fls(0))).Activate
' Création d'une tache horaire à faire dans 30 secondes
RotationId = Now + TimeValue("00:00:30") ' 45 secondes
Application.OnTime RotationId, "Rotation"
' On indique que la rotation est en cours
Application.StatusBar = "Prochaine rotation à " & Format(RotationId, "hh:mm:ss")
End Sub
Sub Rotation2()
If ActiveSheet.Name = ("TDB S") Then
Worksheets("TDB S+1").Activate
RotationId3 = Now + TimeValue("00:00:0001")
Application.OnTime RotationId3, "Rotation3"
Else: MsgBox "Merci de vous placer sur la semaine S pour lancer la rotation!"
End If
End Sub
Sub Rotation3()
Worksheets("TDB S").Activate
RotationId2 = Now + TimeValue("00:00:30")
Application.OnTime RotationId2, "Rotation2"
' On indique que la rotation est en cours
Application.StatusBar = "Prochaine rotation à " & Format(RotationId2, "hh:mm:ss")
End Sub
J'utilise une macro pour faire une rotation entre deux feuilles automatiquement, ce qui me permet d'afficher en continue ces deux feuilles sur un écran de télévision avec un intervalle choisi en fonction de ma convenance.
L'un d'entre vous m'avez déjà donné un bon coup de main pour faire cette macro, j'ai juste ajouté 1 ou 2 lignes pour qu'elle me convienne parfaitement.
Globalement pour la résumer:
Si on est le lundi/mardi/mercredi alors rotation Feuille 1 (30sec) ensuite switch sur Feuille 2 (1sec) et reswitch sur Feuille 1 ()
Cette première étape de rotation sert juste à actualiser mes TCD sur la feuille 1 car il s'actualise lors de l'activation de ma feuille.
En revanche, si nous sommes un jour supérieur mercredi alors Feuille 1 (30sec) ensuite switch sur Feuille 2 (30sec) et ainsi de suite, là pour le coup les informations sur la feuille 2 m'intéressent vraiment c'est pourquoi je veux qu'elle apparaisse 30 secondes.
Ce que je souhaite ajouter sur cette macro c'est un test à chaque rotation du jour actuel.
Le problème c'est que là le jeudi matin, elle a pas pris en compte que nous étions jeudi car je laisse allumer le pc pendant la semaine entière et l'activation de la macro date du lundi.
Donc la macro a bien vu que nous étions lundi le jour du lundi mais après elle ne va plus jamais retester le jour.
J'espère avoir été claire, et je vous remercie par avance pour votre aide.
Bien cordialement
Pierre
' Identification du Timer : important pour le désactiver
Public RotationId As Date
Public RotationId2 As Date
Public RotationId3 As Date
Sub Start_Rotation()
' On lance la rotation
' Si le jour est jeudi/vendredi/samedi/dimanche
If Weekday(Now, vbMonday) >= 4 Then
Rotation
Else
Rotation2
End If
End Sub
Sub Stop_Rotation()
' On supprime la tache horaire de Rotation
If RotationId > 0 Then
Application.OnTime RotationId, "Rotation", , False
Application.StatusBar = ""
RotationId = Empty
ElseIf RotationId2 > 0 Then
Application.OnTime RotationId2, "Rotation2", , False
Application.StatusBar = ""
RotationId2 = Empty
End If
End Sub
Sub Rotation()
' Liste des feuilles à afficher
Dim Fls() As Variant
Fls = Array("TDB S+1", "TDB S")
' On active la feuille qui n'est pas actuellement affichée (flip/flop)
ThisWorkbook.Sheets(IIf(ActiveSheet.Name = Fls(0), Fls(1), Fls(0))).Activate
' Création d'une tache horaire à faire dans 30 secondes
RotationId = Now + TimeValue("00:00:30") ' 45 secondes
Application.OnTime RotationId, "Rotation"
' On indique que la rotation est en cours
Application.StatusBar = "Prochaine rotation à " & Format(RotationId, "hh:mm:ss")
End Sub
Sub Rotation2()
If ActiveSheet.Name = ("TDB S") Then
Worksheets("TDB S+1").Activate
RotationId3 = Now + TimeValue("00:00:0001")
Application.OnTime RotationId3, "Rotation3"
Else: MsgBox "Merci de vous placer sur la semaine S pour lancer la rotation!"
End If
End Sub
Sub Rotation3()
Worksheets("TDB S").Activate
RotationId2 = Now + TimeValue("00:00:30")
Application.OnTime RotationId2, "Rotation2"
' On indique que la rotation est en cours
Application.StatusBar = "Prochaine rotation à " & Format(RotationId2, "hh:mm:ss")
End Sub