VB 2010: Vérifier si une heure est comprise entre deux autres.
Résolu
Anonyme209
Messages postés
761
Statut
Membre
-
Anonyme209 Messages postés 761 Statut Membre -
Anonyme209 Messages postés 761 Statut Membre -
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
- Waptrick java football 2010 - Télécharger - Jeux vidéo
- Real football 2010 télécharger - 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.