bonjour
existe un code qui déclenche une macro si l'heure système est = à l'heure écrite dans une cellule
le tout mis en fonctionnement à l'ouverture du fichier
et ne fonctionne pas si le fichier est fermé
merci
bonjour
existe un code qui déclenche une macro si l'heure système est = à l'heure écrite dans une cellule
le tout mis en fonctionnement à l'ouverture du fichier
et ne fonctionne pas si le fichier est fermé
merci

Bonsoir,
Quelques précisions sont nécessaires.
A priori, cela est possible, mais a peu de chance de se réaliser au moment où vous ouvrez votre fichier.
Quelle est la motivation exacte ?
Salut vsobo et le forum
Je suppose que tu veux parler de l'instruction OnTime. Mais elle ne s'arrête que si tu la fermes (voir l'aide).
A+
bonjour
justement je veux éviter l'application ontime
j'avais déjà fait une application de ce type avec la date et ça fonctionnait
voici l'exemple
et donc je voudrai un peu la même chose mais avec une heure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private sub worksheet if range("A1")>=today then me.tab.colorindex=4 end if if range("B1)=>today then me.tab.colorindex=3 end if end sub
merci
bonjour,
C'est hyper clair vu qu'on ne sait pas ce qui alimente today qui n'est pas il me semble une instruction vba, vois du côté de Now et de ses copains, si ton code cité fonctionne, ça doit suivre...
cordialement,
Didier

Déjà dans votre exemple de code, il y a une petite incohérence :
Ensuite que se passe-t-il si les 2 conditions sont réunies ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private sub worksheet if range("A1")>=today then me.tab.colorindex=4 end if if range("B1)=>today then 'il faut écrire : if range("B1)>= today me.tab.colorindex=3 end if end sub
D'autre part, vous avez écrit à l'origine :
Ce qui m'a amené à vous répondre :existe un code qui déclenche une macro si l'heure système est = à l'heure écrite dans une cellule
Alors est-ce vraiment : si l'heure système est = à ?A priori, cela est possible, mais a peu de chance de se réaliser au moment où vous ouvrez votre fichier.
ou : si l'heure système est >= à ?
Bonjour Jacques Jean,
vous ne vouliez pas rajouter un " ??'il faut écrire : if range("B1)>= today
cordialement,
Ps je crois que ce qu'il veut, c'est émuler le mode tâche d'Outlook, qui, s'il est ouvert envoie un message (pop-up), sachant que là ça ne se déclencherait que si l'heure voulue est "à venir"..
Didier

Bonjour Ormonth,
Oui, bien vu. J'ai fait d'abord un copier/coller et je n'ai même pas vu les guillemets manquants.
Quant à l'émulation du "mode tâche d'Outlook" vous avez peut-être ou sans doute raison, mais il faudrait quand même qu'il soit plus précis sur ce qu'il veut faire.
bonjour
l'exemple avec la date n'est qu'un exemple qui fonctionne
j'ai des séries de feuille
chaque feuille est une semaine et quand le premier jour de la feuille est égal à maintenant alors l'onglet devient vert et quand le dernier jour de la feuille est égal à maintenant alors l'onglet devient rouge
mais ,nous nous écartons du sujet
le but du sujet est d'avoir le même système , mais avec l'heure
merci

Bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part mh = Format(Now, "hh:mm:ss")
bonjour
je n'arrive pas à le faire fonctionner
est-ce que dans la cellule référence , l'heure doit être écrite d'une certaine façon ,pourtant j'ai mis la cellule en format hh:mm:ss
merci

Bonsoir,
Cela fonctionne si les cellules sont formatées en texte.
Salut vsobo et le forum
Date : partie entière du nombre => une égalité est facile à obtenir
heure : partie décimale du nombre => le micro ne travaille pas à la seconde! Il faudrait établir une égalité jusque sur le bit de poid le plus faible. Et ça, ce n'est pas du domaine du possible!
Reste 2 possibilités : l'arrondi à la seconde du nombre (et pas de l'affichage) ou la fourchette (supérieur à limite_inf et inférieurà limite_sup)
A+

Bonjour Gorfael,
Sauf erreur de ma part (toujours possible) j'ai essayé ce code :
En "A1" j'ai entré : "14:10:15" et en "B1" : "14:10:55" (format texte).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Worksheet() mh = Format(Now, "hh:mm:ss") If Range("A1") >= mh Then Cells(1, 1).Interior.ColorIndex = 4 End If If Range("B1") >= mh Then 'il faut écrire : if range("B1)>= today Cells(1, 2).Interior.ColorIndex = 3 End If End Sub
Entre 14:10:16 et 14:10:55 la première condition ne s'exécute pas mais la deuxième s'exécute bien et avant 14:10:15 les deux conditions s'exécutent, après 14:10:55 aucune ne s'exécute.
bonjour
désolé , avec moi ça ne fonctionne pas
au travail j'avais mis une horloge dans une cellule
bref , dès que je remet la main sur ce code , je vous le montre
merci

Bonsoir,
Une précision :
- vous n'avez peut-être pas la possibilité de mettre vos données au format texte et dans ce cas, il y a une autre solution tenant compte de la remarque de Gorfael.
- si vous avez mis vos cellules au format texte alors qu'elles sont déjà renseignées, cela ne fonctionnera pas non plus.
bonjour
voilà comme promis ce que j'avais fait au travail pour appeler un userform avec l'heure systême
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim temps Private Sub Worksheet_Activate() Hon Private Sub Worksheet_Deactivate() Hoff End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Workbook_BeforeClose(Cancel As Boolean) Hoff End Sub Private Sub Workbook_Open() Hon End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Range("C1") = 1 Then UserForm1.Show End If End Subdans la cellule B1 ,j'écris l'heure au format hh:mm:ss
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Dim temps Sub Hon() ThisWorkbook.Sheets(1).Range("A1") = Format(Now, "hh:mm:ss") temps = Now + TimeValue("00:00:01") Application.OnTime temps, "Hon" End Sub Sub Hoff() On Error Resume Next Application.OnTime temps, procedure:="Hon", schedule:=False End Sub
et dans la cellule C1 , je mets la fonction =si(B1=A1;1;"")
et ça fonctionne ,libre à vous pour l'userform
y a t il des inconvénient ?
est-ce correct?
merci

Bonsoir,
Je viens de parcourir rapidement votre dernier message et a priori il ouvre de nouveaux horizons.
Vous n'aviez pas donné ces précisions dans les précédents et la différence peut se trouver justement dans le fait que vous utilisez un Userform.
Je n'ai pas le temps d'approfondir ce soir, mais demain, j'y regarderai de plus près, si vous n'avez pas obtenu d'autres réponses avant.
Bonne soirée en attendant.

Bonjour,
J'ai regardé votre code mais n'ayant pas le tout, je ne peut pour l'instant qu'imaginer : vous utilisez un Userform et donc je suppose que vous affectez le contenu des cellules qui contiennent "hh:mm:ss" à des Textbox ou autres objets du formulaire ?
Si c'est bien le cas, à priori, le raison du bon fonctionnement est la même que celle qui fonctionne chez moi en affectant le format texte aux cellules.
En effet, si vous utilisez le contenu de TextBox pour faire des comparaisons, ce contenu est bien en format texte alors que ce n'est pas le cas si vous faite la comparaison dans des formules Excel utilisant le contenu de vos cellules au format "hh:mm:ss".
bonjour
le chiffre "1" déclenche un userform
ce que je voulais au départ , c'est un enregistrement automatique , mais on me l'a fortement déconseillé (si mauvais manipulation , l'enregistrement auto peut être catastrophique)
donc l'userform est un simple double bouton , un pour enregistrer si on clic dessus et l'autre pour ne pas enregistrer
donc enregistrement semi-auto avec validation de la main de la personne
merci
Partager