VB 2010: Vérifier si une heure est comprise entre deux autres.
Résolu
Anonyme209
Messages postés
681
Date d'inscription
Statut
Membre
Dernière intervention
-
Anonyme209 Messages postés 681 Date d'inscription Statut Membre Dernière intervention -
Anonyme209 Messages postés 681 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je programme une application de sécurité pour empêcher l'utilisation de l'ordinateur en dehors des horaires spécifiées (par l'utilisateur, peut donc changer).
J'ai essayé le code suivant:
Mais ça ne marche pas, le message d'erreur s'affiche même pendant les horaires autorisées.
Merci de votre aide.
Je programme une application de sécurité pour empêcher l'utilisation de l'ordinateur en dehors des horaires spécifiées (par l'utilisateur, peut donc changer).
J'ai essayé le code suivant:
If (Date.Now.Hour > heuredebut And Date.Now.Minute > minutedebut) Or (Date.Now.Hour < heurefin And Date.Now.Minute < minutefin) Then Else MsgBox("En dehors des horaires autorisées.") End If
Mais ça ne marche pas, le message d'erreur s'affiche même pendant les horaires autorisées.
Merci de votre aide.
A voir également:
- VB 2010: Vérifier si une heure est comprise entre deux autres.
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Vb - Télécharger - Langages
- Word 2010 - Télécharger - Traitement de texte
- Vb cable - Télécharger - Audio & Musique
- Waptrick java football 2010 - Télécharger - Jeux vidéo
8 réponses
Bonjour,
il y a tellement de chose sur cette page, je ne sais pas où trouver ce que je cherche pourrais tu m'orienter sur le le bout de code qui correspond à ce que je recherche?
il y a tellement de chose sur cette page, je ne sais pas où trouver ce que je cherche pourrais tu m'orienter sur le le bout de code qui correspond à ce que je recherche?
J'ai pensé faire (01 janvier 2000 est pour l'exemple.)
Mais je ne suis pas sûr que ça marche à tout les coups. Merci de me renseigner sur mon code et, peut-être, m'en donner un plus fonctionnel.
Dim diff = DateDiff("n", heuredebut & ":" & minutedebut, heurefin & ":" & minutefin) If DateDiff("n", heuredebut & ":" minutedebut, Date.now.Hour & ":" & Date.now.Minute) > diff or DateDiff("n", heuredebut & ":" minutedebut, Date.now.Hour & ":" & Date.now.Minute) < 0 Then MsgBox("en dehors des horaires autorisées!") End if
Mais je ne suis pas sûr que ça marche à tout les coups. Merci de me renseigner sur mon code et, peut-être, m'en donner un plus fonctionnel.
Bonjour, excusez moi pour le double post, mais le code de mon message d'avant était très loin d'être correct.
J'ai fait des modifications et ça à l'air de marcher (bien que le code ne soit pas très "propre") TextBox1 : heuredebut, TextBox2: minutedebut, TextBox3: heurefin, TextBox4: minutefin, TextBox5: Date.now.Hour, TextBox6: Date.now.Minute.
Ne pourrait-il pas y avoir une commande du genre
Si vous avez un code plus "propre" et surtout plus simple (parce que celui-ci est un peu long) n'hésitez pas à proposer.
J'ai fait des modifications et ça à l'air de marcher (bien que le code ne soit pas très "propre") TextBox1 : heuredebut, TextBox2: minutedebut, TextBox3: heurefin, TextBox4: minutefin, TextBox5: Date.now.Hour, TextBox6: Date.now.Minute.
Dim day As Date = "01/01/2000" Dim day2 As Date = "02/01/2000" Dim diff = DateDiff("n", day & " " & TextBox1.Text & ":" & TextBox2.Text, day & " " & TextBox3.Text & ":" & TextBox4.Text) If diff < 0 Then diff = DateDiff("n", day & " " & TextBox1.Text & ":" & TextBox2.Text, day2 & " " & TextBox3.Text & ":" & TextBox4.Text) If (DateDiff("n", day & " " & TextBox1.Text & ":" & TextBox2.Text, day2 & " " & TextBox5.Text & ":" & TextBox6.Text) > diff) Or (DateDiff("n", day2 & " " & TextBox1.Text & ":" & TextBox2.Text, day2 & " " & TextBox5.Text & ":" & TextBox6.Text) < -diff) Then MsgBox("en dehors") Else MsgBox("entre") End If Else diff = DateDiff("n", day & " " & TextBox1.Text & ":" & TextBox2.Text, day & " " & TextBox3.Text & ":" & TextBox4.Text) If DateDiff("n", day & " " & TextBox1.Text & ":" & TextBox2.Text, day & " " & TextBox5.Text & ":" & TextBox6.Text) > diff Or DateDiff("n", day & " " & TextBox1.Text & ":" & TextBox2.Text, day & " " & TextBox5.Text & ":" & TextBox6.Text) < 0 Then MsgBox("en dehors") Else MsgBox("entre") End If End If
Ne pourrait-il pas y avoir une commande du genre
If DateEntre(date1,date2) Then 'entre else 'en dehors??? (qui fonctionnerait aussi pour les heures..)
Si vous avez un code plus "propre" et surtout plus simple (parce que celui-ci est un peu long) n'hésitez pas à proposer.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai fait ce genre de chose dans un post que tu avais ouvert. Regarde le 08/07/2014 à 14h38. Le code qui détermine les heures d'été et d'hiver. Il suffit de mettre tes dates et heures à toi pour que cela fonctionne:
https://forums.commentcamarche.net/forum/affich-30455056-vb-recuperer-l-heure-sur-un-serveur-de-temps#p30480712
https://forums.commentcamarche.net/forum/affich-30455056-vb-recuperer-l-heure-sur-un-serveur-de-temps#p30480712
voici le code:
J'ai mis DateInterval.Second car le Format est en seconde. Tu peux l'adapter
Dim seuilete As Date Dim seuilhiver As Date Dim dteData As Date Dim iddate As String Dim uneDateC As Decimal 'nombre seconde depuis début année Dim seuileteC As Decimal 'seconde debut année heure debut Dim seuilhiverC As Decimal 'seconde debut année heure fin Dim DateS As String Dim DateD As DateTime Dim Annee As String Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'mis à jour des dates dteData = Now 'today Annee = (dteData.ToString("yyyy")) 'année en cours iddate = "24/07/" & Annee & " 02:10:30" seuilete = CDate(iddate) '---------------------------------------------------------------------- iddate = "24/07/" & Annee & " 13:10:10" seuilhiver = CDate(iddate) '-------------------------------------------------------------------- 'une petite comparaison DateS = ("01/01/" & Annee) 'Saisir une date : on récupère une string DateD = CDate(DateS) 'Conversion de la string en DateTime uneDateC = DateDiff(DateInterval.Second, DateD, Now) seuileteC = DateDiff(DateInterval.Second, DateD, seuilete) 'différence en jours à partir debut d'année a l'heure d'été seuilhiverC = DateDiff(DateInterval.Second, DateD, seuilhiver) 'différence en jours heure d'hiver à la fin de l'année If (seuileteC < uneDateC) And (uneDateC < seuilhiverC) Then MessageBox.Show("horaires autorisées!", "Heures d'ouverture", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("En dehors des horaires autorisées.", "Heures d'ouverture", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub
J'ai mis DateInterval.Second car le Format est en seconde. Tu peux l'adapter
J'ai vu que tu utilisais plusieurs TextBox. Je te conseille l'utilisation d'un MaskedTextBox. Tu peux gérer la saisie des dates. Voici un code avec 2 MaskedTextBox nommés:
MaskedDebut et MaskedFin
Il faut ajouter un ToolTip1 pour gérer les avertissements
Bonne programmation
MaskedDebut et MaskedFin
Il faut ajouter un ToolTip1 pour gérer les avertissements
Option Strict On Public Class Form1 Dim seuilete As Date Dim seuilhiver As Date Dim dteData As Date Dim iddate As String Dim uneDateC As Decimal 'nombre jour depuis début année Dim seuileteC As Decimal 'jour debut année heure debut Dim seuilhiverC As Decimal 'jour debut année heure fin Dim DateS As String Dim DateD As DateTime Dim Annee As String 'en savoir plus sur l'utilisation des MaskedTextBox 'http://msdn.microsoft.com/fr-fr/library/kkx4h3az(v=vs.110).aspx Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.ToolTip1.IsBalloon = True MaskedDebut.ValidatingType = GetType(System.DateTime) MaskedFin.ValidatingType = GetType(System.DateTime) Me.MaskedDebut.Mask = "00/00/0000 00:00:00" Me.MaskedFin.Mask = "00/00/0000 00:00:00" MaskedDebut.Text = "25/07/2014 02:10:30" MaskedFin.Text = "25/07/2014 13:07:10" End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'mis à jour des dates dteData = Now 'today Annee = (dteData.ToString("yyyy")) 'année en cours iddate = MaskedDebut.Text ' "24/07/" & Annee & " 02:10:30" seuilete = CDate(iddate) '---------------------------------------------------------------------- iddate = MaskedFin.Text '"24/07/" & Annee & " 13:07:10" seuilhiver = CDate(iddate) '-------------------------------------------------------------------- 'une petite comparaison DateS = ("01/01/" & Annee) 'Saisir une date : on récupère une string DateD = CDate(DateS) 'Conversion de la string en DateTime uneDateC = DateDiff(DateInterval.Second, DateD, Now) seuileteC = DateDiff(DateInterval.Second, DateD, seuilete) 'différence en secondes à partir debut d'année a l'heure du début seuilhiverC = DateDiff(DateInterval.Second, DateD, seuilhiver) 'différence en secondes heure de la fin à la fin de l'année If (seuileteC < uneDateC) And (uneDateC < seuilhiverC) Then MessageBox.Show("horaires autorisées!", "Heures d'ouverture", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("En dehors des horaires autorisées.", "Heures d'ouverture", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub MaskedDebut_MaskInputRejected(sender As System.Object, e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles MaskedDebut.MaskInputRejected ToolTip1.ToolTipTitle = "Validité de la saisie" ToolTip1.Show("Nous sommes désolés, mais uniquement des chiffres (0-9) sont autorisés dans les dates.", MaskedDebut, 5000) End Sub Private Sub MaskedFin_MaskInputRejected(sender As System.Object, e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles MaskedFin.MaskInputRejected ToolTip1.ToolTipTitle = "Validité de la saisie" ToolTip1.Show("Nous sommes désolés, mais uniquement des chiffres (0-9) sont autorisés dans les dates.", MaskedFin, 5000) End Sub Public Sub MaskedDebut_TypeValidationCompleted(sender As Object, e As TypeValidationEventArgs) If Not e.IsValidInput Then ToolTip1.ToolTipTitle = "Validité de la valeur de la date" ToolTip1.Show("Nous sommes désolés, mais la valeur que vous avez entré n'est pas une date valide. S'il vous plaît changer la valeur.", MaskedDebut, 5000) e.Cancel = True End If End Sub Public Sub MaskedFin_TypeValidationCompleted(sender As Object, e As TypeValidationEventArgs) If Not e.IsValidInput Then ToolTip1.ToolTipTitle = "Validité de la valeur de la date" ToolTip1.Show("Nous sommes désolés, mais la valeur que vous avez entré n'est pas une date valide. S'il vous plaît changer la valeur.", MaskedFin, 5000) e.Cancel = True End If End Sub End Class
Bonne programmation
Bonjour,
il est vrai que d'utiliser une MaskedTextBox au lieu de deux TextBox ou deux NumericUpDown serais plus simple, je n'y avais pas pensé avant.
Quant au ToolTip, je ne connaissais pas avant que tu m'en parles. Je vais essayer tout de suite.
Merci de votre aide.
Je pense que je peux mettre le sujet en résolu.
il est vrai que d'utiliser une MaskedTextBox au lieu de deux TextBox ou deux NumericUpDown serais plus simple, je n'y avais pas pensé avant.
Quant au ToolTip, je ne connaissais pas avant que tu m'en parles. Je vais essayer tout de suite.
Merci de votre aide.
Je pense que je peux mettre le sujet en résolu.