Pb pour faire un compte à rebours avec des NumericUpDown

cs_Nestor Messages postés 182 Date d'inscription mardi 8 janvier 2002 Statut Membre Dernière intervention 2 octobre 2012 - 2 oct. 2012 à 00:21
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 - 4 oct. 2012 à 08:18
Bonjour,

Je voudrais faire un compte à rebours au format Jours, Mois, Heures, Minute.
Au départ j'ai mis en route comme ca:

Dim DateFin As DateTime = DateTime.Parse("2012-09-04 12:00")


Mais pour finir j'ai besoin que l'utilisateur sélectionne lui même sa date.
J'ai donc ajouté 5 NumericUpDown.
voici mon code:

Dim DateDepart As DateTime = DateTime.Parse(Date.Now)
'Dim DateFin As DateTime = DateTime.Parse("2012-09-04 12:00")
Dim DateFin As DateTime = DateTime.Parse(NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value)
Dim ts As TimeSpan = DateFin.Subtract(DateDepart)
Label1.Text = CStr(ts.Days) & " Jours, " & CStr(ts.Hours) & " Heures, " & CStr(ts.Minutes) & " Minutes, " & CStr(ts.Seconds) & " Secondes."


Voila ce que VB.NET2010 me dit:

L'exception System.FormatException n'a pas été gérée
La chaîne n'a pas été reconnue en tant que DateTime valide.

Ou serait l'erreur d’après vous ? ...et comment résoudre ce petit pb.
Merci de votre aide.

5 réponses

Utilisateur anonyme
2 oct. 2012 à 02:26
Bonjour,

Pourquoi utiliser des NumericUpDown pour choisir une date ? Surtout qu'il y a un contrôle DateTimePicker pour faire la job pas mal plus simplement.



L'exception System.FormatException n'a pas été gérée
La chaîne n'a pas été reconnue en tant que DateTime valide.

Ou serait l'erreur d’après vous ? ...et comment résoudre ce petit pb.
Merci de votre aide.


C'est bien beau le message d'erreur, mais c'est quelle ligne qui fait planter le programme ?

Et Accessoirement, c'est quoi la valeur qui fait planter le programme?

Parce que visiblement, ta "date" n'est carrément pas une date ou n'est pas reconnue comme une date.

Mais pour le reste ma boule de cristal est opaque.
0
Utilisateur anonyme
2 oct. 2012 à 02:29
Bonjour,


Dim DateDepart As DateTime = DateTime.Parse(Date.Now)
0
Utilisateur anonyme
2 oct. 2012 à 02:52
Bonjour,

Oups!!!!!!!!!!!!!!!!!!!!!!!!!!!

Excusez pardon, je voulais un aperçu que j'ai fini par avoir d'une manière imprévue.

Ceci dit, je voulais dire que cette ligne est mal formulée:



Dim DateDepart As DateTime = DateTime.Parse(Date.Now)



Elle ne fait que convertir un type DateTime en un type DateTime

En y regardant de plus près et en y pensant un peu plus, j'ai comme la vague impression que cette ligne-là n'a pas vraiment d'allure.



Dim DateFin As DateTime = DateTime.Parse(NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3



Puisque, j'ai ouvert l'aide de VB2010 et que dans l'aide de VB2010, ils disent que la valeur (propriété Value) d'un NumericUpDown est de type Decimal. Donc c'est un nombre. Ta ligne dit que tu veux convertir le résultat d'une addition de trois nombres, donc un nombre unique, en date...

Mais, ma question initiale demeure : pourquoi saisir une date avec 5 contrôles quand il y en a un autre qui existe déjà et qui est fait spécialement pour cela ?
0
cs_Nestor Messages postés 182 Date d'inscription mardi 8 janvier 2002 Statut Membre Dernière intervention 2 octobre 2012
2 oct. 2012 à 09:14
Bonjour,

Je réalise un exécuteur de macro qui se déclenche le jour à l'heure à la minute et à la seconde prête. Le DateTimePicker c'était trop simple à utiliser mais sur tout par choix visuel et d'utilisation que mon choix ce tourne sur des NumericUpDown.
Au final l'utilisateur n'a qu'à regarder la série des NumericUpDown pour voir le temps qu'il reste avant l’exécution de la Macro.
(Dans mon exemple au dessus, j'utilise un label pour faire court...)

Et oui, l'erreur est bien stoppé sur cette ligne:

Dim DateFin As DateTime = DateTime.Parse(NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
4 oct. 2012 à 08:18
Bonjour Nestor,

Tu dis :


... compte à rebours au format Jours, Mois, Heures, Minute.


Si on part de : 01/03 à 00h00
La seconde d'avant va donner :
28/02 à 23h59
Ça demanderait à y mettre l'année pour être bien compréhensible.

Le mieux ne serait-il pas de tout transformer en secondes, puis de les passer au Timer afin d'afficher le décompteur ?

*

Sinon, pour le choix, le plus rapide est le comboBox, puis ensuite l'affichage dans ce dernier suite à validation par bouton.

Cordialement, Joe.
0
Rejoignez-nous