fadan
Messages postés14Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention22 janvier 2009
-
15 nov. 2008 à 02:17
fadan
Messages postés14Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention22 janvier 2009
-
21 nov. 2008 à 11:35
Bonjour le forum,
Etant débutant en vb.net 2008,
J'ai peiné, mais j'ai enfin réussi à créer deux MaskedTextBox (heureDebut) et (heureFin) avec quelques controles.
J'ai éssayé un tas de trucs mais il m'indique l'opération éffectuée "timeSpan" n'est pas un menbre windows.System.
Pourriez vous m'aidez à éffectuer le calcul pour afficher dans un label, la durée (heureFin - heureDebut)
Merci d'avance de me prêter votre temps.
fadan,
dont voici un bout de code:Private
Sub frm_journalier_Load()
Me
.Mask_heureDebut.Mask =
"00:00"
Me.Mask_heureDebut.ValidatingType =
GetType(System.DateTime)
Private
Sub Mask_heureFin_TypeValidationCompleted()
If (
Not e.IsValidInput)
Then
MessageBox.Show (".......
")
Mask_heureFin.Text =
""
Mask_heureFin.Select()
Else
Dim heureFin
As DateTime =
CDate(e.ReturnValue)
Dim heureDebut
As DateTime
heureFin = Mask_heureFin.Text
heureDebut = Mask_heureDebut.Text
If (heureFin = heureDebut)
Then
MessageBox.Show(
"........")
Mask_heureFin.Text =
""
Mask_heureFin.Select()
e.Cancel =
True
End
If
If (heureFin < heureDebut)
Then
MessageBox.Show(
"..........")
Mask_heureFin.Text =
""
Mask_heureFin.Select()
e.Cancel =
True
End
If
End
If
End
Sub
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 19 nov. 2008 à 14:44
Salut,
Pour empêcher que HeureFin soit plus grand que HeureDebut :
If Date.Compare(HeureDebut, HeureFin) > 0 Then
MsgBox("Attention !!! HeureDebut est plus grand que HeureFin... La différence des deux entrainera un résultat avec une heure négative")
End If
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 15 nov. 2008 à 20:51
Salut,
Voici une des nombreuses manières permettant de calculer la différence entre deux heures :
Dim HeureDebut, HeureFin As New DateTime
' On déclare deux variables DateTime
Dim Intervalle_Heures_Minutes As String
' On déclare une variable de type String qui
' contiendra la différence entre HeureDebut
' et HeureFin
HeureDebut = CDate(MaskedTextBox1.Text)
' Note : Le contenu de la MaskedTextBox1 doit
' être de la forme hh:mm:ss
' On récupère le contenu de la MaskedTextBox1
' et on le convertit en une Date
HeureFin = CDate(MaskedTextBox2.Text)
' Note : Le contenu de la MaskedTextBox2 doit
' être de la forme hh:mm:ss
' On récupère le contenu de la MaskedTextBox2
' et on le convertit en une Date
Intervalle_Heures_Minutes = HeureFin.Subtract(HeureDebut).ToString
' On effectue la différence entre les deux heures
' et on stocke le tout dans une variable de type
' String après avoir fait bien entendu convertit
' le TimeSpan en String
MsgBox(Intervalle_Heures_Minutes)
' On affiche la différence entre les deux heures
fadan
Messages postés14Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention22 janvier 2009 16 nov. 2008 à 16:59
Bonjour,
Il me doit de commencer par te remercier pour la symphathie que tu as envers les débutants, qui comme moi n'ont aucun bagage en vb.net.
Cela m'incite à ne pas me décourager et continuer à persévérer.
Encore merci.
J'ai donc repris ton code et essayé de le décortiquer et en ajoutant un format "HH:mm" cela fonctionne.
Un seul hic.. il me donne le résultat en HH:mm:ss, j'ai poutant cherché mais je n'arrive pas a le mettre au format HH:mm. Et je me demande si cela n'est pas provoqué par :
If HeureFin.Subtract(HeureDebut).Minutes < 10 Then
Intervalle_Heures_Minutes += "0"
End If
Intervalle_Heures_Minutes += HeureFin.Subtract(HeureDebut).Minutes.ToString
fadan
Messages postés14Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention22 janvier 2009 18 nov. 2008 à 18:11
Bonjour,
Que dire, et bien ... Que du bonheur, pour avoir eu la gentillesse de me répondre mais aussi un exemple pour faciliter la compréhention.
Je n'en reste pas là, même si cela n'est pas évident.
Je cherche maintenant à ce que le code n'affiche pas le résultat des heures négatives dans le Label
car j'ai mis un contrôle sur le textbox "heureFin" qui vérifie si l'heure de fin est <= que l'heureDebut.
Encore merci pour tes explications.
Amicalement, fadan
fadan
Messages postés14Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention22 janvier 2009 20 nov. 2008 à 16:30
Bonjour,
Encore merci, grâce à ta gentillesse et ces quelques lignes de codes j'ai appris à déclarer des variables, à formater, à soustraire, à comparer et bien d'autres choses et j'avoue qu'il y avait encore deux mois, je m'arrachai les cheveux et je ne pensai pas y arriver.
Pour comparer les dates et heures, j'utilisai ce code :
If (heureFin <= heureDebut) Then
MessageBox.Show("Erreur")
Mask_heureFin.Text = ""
Mask_heureFin.Select()
End If
J'avais déjà fait lecture de compare sans pouvoir l'inserer dans le code, car j'utilisai quelque chose du style : if duree.Compare(heureDebut,heureFin) => 0 then ....
Et quand j'ai reçu ton message, je me suis dit que j'était pas loin.
Tu as été plus rapide que moi et je t'en remercie.
Une question à un pro.
D'un point de vue programmation, est-il préférable (Compare) plutôt que le code de contrôle que j'utilisai décrit ci-dessus?
Encore merci.
fadan
fadan
Messages postés14Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention22 janvier 2009 21 nov. 2008 à 11:35
Bonjour,
Merci de la réponse, c'est ce que je pensai également pour (compare) et puisque je débute pourquoi utiliser d'anciennes méthodes.
Et si je peux encore abuser de ton temps car zut... J'ai encore un petit souci., je cherche mais ne trouve pas la solution.
J'affiche heureDebut dans un label et si je change l'heureDebut plusieur fois, elle est bien affichée dans le label.
Mais pour l'heurFin il ne me fait le calcul qu'à la première entrée, c.a.d:
j'entre heureDebut = affiche bien heureDebut même si je modifie plusieurs fois.
j'entre heureFin= affiche bien le Substract dans le label, jusque là parfait.
Mais si je change l'heureFin en ne modifiant pas heureDebut il n'affiche plus le calcul dans le label..
voici le code ;
Et encore mille merçi
fadan.
heureDebut
If (
Not e.IsValidInput)
Then...(message erreur)
Else
Lbl_Amplitude.Text = Format(heureDebut,
"HH:mm").ToString
-----------------------------------------------------------------------------------
Private
Sub Mask_heureFin_TypeValidationCompleted()
If (Not e.IsValidInput) Then...
(message erreur pour heureFin)
Else
Dim heureDebut, heureFin
As
New DateTime
Dim duree
As
String
heureDebut =
CDate(Mask_heureDebut.Text)
heureDebut = Format(heureDebut,
"HH:mm")
heureFin =
CDate(Mask_heureFin.Text)
heureFin = Format(heureFin,
"HH:mm")
duree = heureFin.Subtract(heureDebut).Hours.ToString +
":"
If heureFin.Subtract(heureDebut).Minutes < 10
Then
duree +=
"0"
duree += heureFin.Subtract(heureDebut).Minutes.ToString
Lbl_Amplitude.Text = duree.ToString
End
If
If
Date.Compare(heureDebut, heureFin) >= 0
Then
Lbl_Amplitude.Text =
""
Mask_heureFin.Select()
MessageBox.Show(
"Erreur
End
If
End
If
End
Sub