Lancer une procédure selon conditions (date et heure)

maud.33500

XLDnaute Nouveau
Bonjour le forum,

Ca faisit bien longtemps que je n'avais pas eu besoin de votre aide mais là, je sèche complétement!

Je souhaite lancer une procédure qui s'exécute de la façon suivante:

- du lundi au vendredi à 6h00, 14h00 et 22h00
- le samedi et dimanche à 6h00 et 18h00

J'ai essayé d'adapter lecode suivant qui fonctionne très bien avec différentes fonctions pour prendre en compte mes conditions: timer, intervalle,si date jour = 7 ou 1 ... Mais rien ne fonctionne.

Quelqu'un aurait une idée?

Merci d'avance


Code:
Sub auto_open()
  heure = "06:00:00"
  Application.OnTime EarliestTime:=TimeValue(heure), Procedure:="ferme"
End Sub

Sub ferme()
   ActiveWorkbook.Close savechanges = True
End Sub
 

maud.33500

XLDnaute Nouveau
Re : Lancer une procédure selon conditions (date et heure)

Bonjour Michel,

Merci pour ta réponse, je suis d'accord avec toi pour la condition If, je l'ai adapté au samedi et dimanche...
Mais je n'arrive pas à définir plusieurs variables "heure" et c'est ça qui me bloque vraiment, une astuce?


Code:
Sub auto_open()
  Dim heure$
  Dim heure1$
  heure = "06:00:00" ' ou "18:00:00"
  heure1 = "06:00:00" ' ou "14:00:00" ou "22:00:00"
  ' Sachant que "heure1" ne fonctionne pas...
  
 If Weekday(Date) = 1 Or 7 Then
 Application.OnTime EarliestTime:=TimeValue(heure), Procedure:="ferme" 'si samedi ou dimanche enregistrement à 6h00 et à 18h00
Else
 Application.OnTime EarliestTime:=TimeValue(heure1), Procedure:="ferme" ' si reste de la semaine enregistrement à 6h00, à 14h00 et à 22h00
    End If
  
End Sub
 

MJ13

XLDnaute Barbatruc
Re : Lancer une procédure selon conditions (date et heure)

Re

Te prend pas la tête, si tu n'as pas l'habiude, va au plus simple (c'est ce que je fais en général et je gagne 10 fois le temps perdu :)):

Pour chaque heure, tu fais:

Code:
if WD(date) > X or WD(date) < Y then appp...on time  "06:00:00"
 

maud.33500

XLDnaute Nouveau
Re : Lancer une procédure selon conditions (date et heure)

Re Michel,

Ca fonctionne parfaitement! A force d'être dans mon code, je n'ai pas vu ce qui était pourtant évident! Un grand merci !

Bon ben j'y retourne...
Bonne journée

PS: Voici le code que j'ai utilisé, on sait jamais, ça pourrait aider quelqu'un...

Code:
Sub auto_open()

 If Weekday(Date) > 2 And Weekday(Date) < 7 Then 'définit jours semaine (3 enregistrements / jour)
 Application.OnTime EarliestTime:=TimeValue("06:00:00"), Procedure:="ferme"
 Application.OnTime EarliestTime:=TimeValue("14:00:00"), Procedure:="ferme"
 Application.OnTime EarliestTime:=TimeValue("22:00:00"), Procedure:="ferme"
 
 Else 'Sinon WE (2 enregistrements / jour)
 Application.OnTime EarliestTime:=TimeValue("06:00:00"), Procedure:="ferme"
 Application.OnTime EarliestTime:=TimeValue("18:00:00"), Procedure:="ferme"
 
 End If

End Sub
 

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon