Pb pour faire un compte à rebours avec des NumericUpDown

Signaler
Messages postés
182
Date d'inscription
mardi 8 janvier 2002
Statut
Membre
Dernière intervention
2 octobre 2012
-
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
-
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


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.

Bonjour,


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

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 ?
Messages postés
182
Date d'inscription
mardi 8 janvier 2002
Statut
Membre
Dernière intervention
2 octobre 2012

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)
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
5
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.