![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| Bonjour, Je voudrais déterminer si je suis dans la plage 'Heure de nuit' ou 'heure de jour' en fonction de l'heure courante de l'ordinateur. Ce que j'ai fait : MyTime = Time Debug.Print "Heure Courante " & MyTime Select Case MyTime Case Is > HDebut Debug.Print "Heure de nuit le soir" Case Is < HFin Debug.Print "Heure de nuit le matin" Case Else Debug.Print "Heure de jour" End Select (HDebut et HFin proviennent d'une table parramètres) Mon problème : Cela fonctionne bien tant que l'heure de début est située le soir avant minuit et si l'heure de fin est située le matin aprés minuit. Si la plage change et devient par exemple 01:00 à 05:00 cela ne ne fonctionnera pas. L'idée est de faire 'Case HDebut to HFin' mais dans ce cas cela ne fontionne pas si la plage est située sur 2 jours comme 23:00 à 05:00 par exemple Avez vous l'astuce ? D'avance merci J-Yves |
| | ||||
| ||||
| |
| |||
| Merci FABIEN J'ai adapté et cela fonctionne bien Aprés le repas on a les idées + claires ;-) *** Bientot J-Yves "JeanYves" <removetechnic***sdis70.fr> a écrit dans le message de news: g66rte$lm2$1***s1.news.oleane.net... > > "Fabien" <UrbaniakFabienxxxx***Neuf.fr> a écrit dans le message de news: > OunSHYK7IHA.3260***TK2MSFTNGP03.phx.gbl... >> Fabien a écrit : >>> JeanYves a écrit : >>>> Bonjour, >>>> >>>> Je voudrais déterminer si je suis dans la plage 'Heure de nuit' ou >>>> 'heure de jour' en fonction de l'heure courante de l'ordinateur. >>>> >>>> Ce que j'ai fait : >>>> >>>> MyTime = Time >>>> >>>> Debug.Print "Heure Courante " & MyTime >>>> >>>> Select Case MyTime >>>> Case Is > HDebut >>>> Debug.Print "Heure de nuit le soir" >>>> Case Is < HFin >>>> Debug.Print "Heure de nuit le matin" >>>> Case Else >>>> Debug.Print "Heure de jour" >>>> End Select >>>> (HDebut et HFin proviennent d'une table parramètres) >>>> >>>> Mon problème : >>>> Cela fonctionne bien tant que l'heure de début est située le soir avant >>>> minuit et si l'heure de fin est située le matin aprés minuit. >>>> Si la plage change et devient par exemple 01:00 à 05:00 cela ne ne >>>> fonctionnera pas. >>>> >>>> L'idée est de faire 'Case HDebut to HFin' mais dans ce cas cela ne >>>> fontionne pas si la plage est située sur 2 jours comme 23:00 à 05:00 >>>> par exemple >>>> >>>> Avez vous l'astuce ? D'avance merci >>>> >>>> J-Yves >>>> >>>> >>>> >>> Salut J-Yves >>> Avec quelque chose comme >>> Public Function test_plage(hdeb As String, hfin As String, Htest As >>> String) As Boolean >>> 'Retourne Vrai si dans la plage >>> Dim Hdebnum, HfinNum, HtestNum As Double >>> Hdebnum = convert_tps_centieme(hdeb) >>> HfinNum = convert_tps_centieme(hfin) >>> HtestNum = convert_tps_centieme(Htest) >>> If Hdebnum > HfinNum Then >>> test_plage = HtestNum >= Hdebnum Or HtestNum <= HfinNum >>> Else >>> test_plage = HtestNum >= Hdebnum And HtestNum <= HfinNum >>> End If >>> >>> End Function >>> >>> Public Function convert_tps_centieme(H As String) As Double >>> convert_tps_centieme = Left(H, InStr(1, H, ":") - 1) + (Mid(H, >>> InStr(1, H, ":") + 1) * 5 / 3) / 100 >>> End Function >>> >>> A tester bien sur ;-) >>> ***+ >> Oups , c'est ok si les heures sont au format hh:mm ou h:mm >> Time retournant du hh:mm:ss soit on tronque >> MyTime=left(MyTime,len(MyTime)-3) >> >> Soit >> Public Function convert_tps_centieme(H As String) As Double >> convert_tps_centieme = Left(H, InStr(1, H, ":") - 1) + (Mid(H, >> InStr(1, H, ":") + 1, 2) * 5 / 3) / 100 >> End Function > > Merci mais j'obtiens ces résultats qui ne sont pas systématiquement bon > > HTest 11:59:32 - Debut 01:00:01 - Fin 08:00:00 > TestNum 11,9833333333333 - DebNum 1 - FinNum 8 > Cas Hors plage > Ok > > HTest 11:58:50 - Debut 23:00:01 - Fin 08:00:00 > TestNum 11,9666666666667 - DebNum 23 - FinNum 8 > Cas Dans la plage > Pas bon > > HTest 01:56:58 - Debut 23:00:01 - Fin 08:00:00 > TestNum 1,93333333333333 - DebNum 23 - FinNum 8 > Cas DAns la plage > Ok > > HTest 01:55:47 - Debut 01:00:01 - Fin 08:00:00 > TestNum 1,91666666666667 - DebNum 1 - FinNum 8 > Cas Hors plage > > Pas bon > > ***+ > > JY > |
| |||
| "Fabien" <UrbaniakFabienxxxx***Neuf.fr> a écrit dans le message de news: OunSHYK7IHA.3260***TK2MSFTNGP03.phx.gbl... > Fabien a écrit : >> JeanYves a écrit : >>> Bonjour, >>> >>> Je voudrais déterminer si je suis dans la plage 'Heure de nuit' ou >>> 'heure de jour' en fonction de l'heure courante de l'ordinateur. >>> >>> Ce que j'ai fait : >>> >>> MyTime = Time >>> >>> Debug.Print "Heure Courante " & MyTime >>> >>> Select Case MyTime >>> Case Is > HDebut >>> Debug.Print "Heure de nuit le soir" >>> Case Is < HFin >>> Debug.Print "Heure de nuit le matin" >>> Case Else >>> Debug.Print "Heure de jour" >>> End Select >>> (HDebut et HFin proviennent d'une table parramètres) >>> >>> Mon problème : >>> Cela fonctionne bien tant que l'heure de début est située le soir avant >>> minuit et si l'heure de fin est située le matin aprés minuit. >>> Si la plage change et devient par exemple 01:00 à 05:00 cela ne ne >>> fonctionnera pas. >>> >>> L'idée est de faire 'Case HDebut to HFin' mais dans ce cas cela ne >>> fontionne pas si la plage est située sur 2 jours comme 23:00 à 05:00 par >>> exemple >>> >>> Avez vous l'astuce ? D'avance merci >>> >>> J-Yves >>> >>> >>> >> Salut J-Yves >> Avec quelque chose comme >> Public Function test_plage(hdeb As String, hfin As String, Htest As >> String) As Boolean >> 'Retourne Vrai si dans la plage >> Dim Hdebnum, HfinNum, HtestNum As Double >> Hdebnum = convert_tps_centieme(hdeb) >> HfinNum = convert_tps_centieme(hfin) >> HtestNum = convert_tps_centieme(Htest) >> If Hdebnum > HfinNum Then >> test_plage = HtestNum >= Hdebnum Or HtestNum <= HfinNum >> Else >> test_plage = HtestNum >= Hdebnum And HtestNum <= HfinNum >> End If >> >> End Function >> >> Public Function convert_tps_centieme(H As String) As Double >> convert_tps_centieme = Left(H, InStr(1, H, ":") - 1) + (Mid(H, >> InStr(1, H, ":") + 1) * 5 / 3) / 100 >> End Function >> >> A tester bien sur ;-) >> ***+ > Oups , c'est ok si les heures sont au format hh:mm ou h:mm > Time retournant du hh:mm:ss soit on tronque > MyTime=left(MyTime,len(MyTime)-3) > > Soit > Public Function convert_tps_centieme(H As String) As Double > convert_tps_centieme = Left(H, InStr(1, H, ":") - 1) + (Mid(H, > InStr(1, H, ":") + 1, 2) * 5 / 3) / 100 > End Function Merci mais j'obtiens ces résultats qui ne sont pas systématiquement bon HTest 11:59:32 - Debut 01:00:01 - Fin 08:00:00 TestNum 11,9833333333333 - DebNum 1 - FinNum 8 Cas Hors plage Ok HTest 11:58:50 - Debut 23:00:01 - Fin 08:00:00 TestNum 11,9666666666667 - DebNum 23 - FinNum 8 Cas Dans la plage Pas bon HTest 01:56:58 - Debut 23:00:01 - Fin 08:00:00 TestNum 1,93333333333333 - DebNum 23 - FinNum 8 Cas DAns la plage Ok HTest 01:55:47 - Debut 01:00:01 - Fin 08:00:00 TestNum 1,91666666666667 - DebNum 1 - FinNum 8 Cas Hors plage Pas bon ***+ JY |
| |
| |
![]() |
| Tags: controler, dtermine, horaire, lheure, machine, plage, situe |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Utiliser une plage horaire pour un calcul | hobbes34 | Newsgroup microsoft.public.fr.excel | 14 | 30/07/2008 11h59 |
| Re: recherche dans une plage | Jacky | Newsgroup microsoft.public.fr.excel | 0 | 01/06/2008 08h46 |
| tester dans quel intervale se situe une donnée | Marc | Newsgroup microsoft.public.fr.excel | 1 | 19/03/2008 19h57 |
| [VBA] Format horaire dans un TextBox | Amalric Parré | Newsgroup microsoft.public.fr.excel | 2 | 23/02/2008 18h48 |
| Plage horaire sur ISA 2004 | GG | Newsgroup microsoft.public.fr.isaserver | 4 | 04/01/2007 06h33 |