Ça doit être une histoire d'heure, dtpFin.Value serait par exemple à midi alors que laDate est à 9h00.
Donc le 13 juillet 9h c'est bien avant le 13 juillet midi ça fait un tour de plus.
Le hic avec ta bidouille c'est si pour une raison quelconque l'heure change, ça ne marchera plus.
Teste ça
Dim laDate As DateTime = dtpDebut.Value.Date 'ici on ne prend que la composante date '... While laDate < dtpFin.Value.Date '...
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
J'ai utiliser montcalendar
Dim sMonthSelected As String 'I have this under my Public class sMonthSelected = MonthCalendar1.SelectionRange.Start.Date.ToString("yyyyMMdd") MsgBox(sMonthSelected)
Je t'ai déjà dit que la base de la base quand tu travailles avec des dates c'est de te servir du type DateTime.
Ça
Do While tbdate.Text + var4183 <> tbdate1.Text
c'est aberrant et même si ça fonctionne aujourd'hui, le fait de penser comme ça te jouera des tours.
Et depuis des mois que tu poses des questions de débutant (ça c.est normal quand on débute) et qu'on te dit que tu n'y arriveras qu'en prenant le temps d'apprendre les bases. Tu ne l'as pas fait.
Dans un cas comme dans l'autre, tu ne progresseras pas sans apprendre et comprendre de nombreux fondamentaux qui te font défaut.
Si tu avais fait les efforts nécessaires ces derniers mois, tu les aurais acquis et tu ne perdrais pas des heures à buter sur des problèmes aussi simples.
Je t'invite à nouveau à lire ce message https://codes-sources.commentcamarche.net/forum/affich-10107769-message-a-tous-les-debutants-souvent-autodidactes#p10107769
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
oui je l'utilise le datetime mais je voulais teste et me tromper par moi meme en me trompant j'apprends de mes erreurs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEn théorie oui on apprend de ses erreurs, mais si on les refait c'est qu'on n'a pas appris.
C'est au moins la 3eme fois que tu fais ce genre d'erreurs, la première c'était dans ta première question, et la précédente ne date même pas de 3 semaines.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
ah oui effectivement je m'en souvenait plus. désolé
Je ne cherche pas à t'accabler, mais à te faire prendre conscience que pour devenir un bon codeur, ça demande un réel investissement.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Bon je commence je pense mettre les dates dans une textbox puis prendre chaque date une par un pour faire mon traitement.
Dim dt1 As Date = CDate(DateTimePicker1.Value) Dim dt2 As Date = CDate(DateTimePicker2.Value) ComboBox1.Items.Add(CStr(dt1)) ' pour éviter l'appel à la fonction dateadd avec 0 jour à ajouter => ainsi la boucle démarre à 1 For i As Integer = 1 To CInt(DateDiff(DateInterval.Day, dt1, dt2)) ComboBox1.Items.Add(CStr(DateAdd(DateInterval.Day, i, dt1))) Next
parmi les trucs qu'on t'a répété plusieurs fois, enlève la référence à visual basic.
VB.net c'est pas du VB6, VB6 est obsolète depuis 1999.
Le type Date, CDate, Cint, CStr, DateDiif, DateAdd c'est à bannir.
Je t'ai dit de te servir de DateTime.
En plus la propriété Value, d'un DateTimePicker c'est déjà un DateTime, y a pas de conversion à faire.
Je t'ai aussi dit et répété que les données doivent être dans des collections, que les contrôles ne doivent servir qu'à l'interface avec l'utilisateur.
Avec ça
ComboBox1.Items.Add
Ce ne sont plus des dates mais des comboboxitems. Pour t'en resservir en tant que date, il faut les reconvertir.
Perte de temps, consommation de ressource pour rien, pas logique dans un langage objet.
Ce commentaire
' pour éviter l'appel à la fonction dateadd avec 0 jour à ajouter => ainsi la boucle démarre à 1
Alors qu'en dessous tu nous fais des conversions de conversions sur 2 lignes
CInt(DateDiff(DateInterval.Day, dt1, dt2)) ComboBox1.Items.Add(CStr(DateAdd(DateInterval.Day, i, dt1)))
Ou dans le code de ce matin
If IO.File.Exists("c:\test\" & tbdate.Text + var & ".txt") Then Dim truc As String() = System.IO.File.ReadAllLines("c:\test\" & tbdate.Text + var & ".txt")
2 fois la même concaténation en 2 lignes
Enfin tu utilises des noms faibles, c'est une mauvaise pratique, un nom fort permet de savoir sans équivoque à quoi sert telle ou telle variable. C'est déjà plus simple à coder, mais c'est encore plus simple à maintenir, quand 1 an ou 2 après la fin de ton projet il te faudra t'y replonger pour corriger un bug, ou mettre à jour une fonction qui doit évoluer ComboBox1 ça va vraiment pas t'aider à retrouver tes petits.
En 6 lignes, tu résumes tout ce que j'essaye de te faire comprendre depuis 3h.
Tu bidouilles avec plus ou moins de succès mais sans progression et ça fait 6 mois que ça dure.
En principe, si tu avais suivi les cours qu'on t'as conseillé le 17 février tu devrais coder bien mieux que ça et ne venir ici que pour des problèmes bien plus complexe que faire une boucle entre dates....
Dim laDate As DateTime = dtpDebut.Value 'là on sait que c'est un DateTimePicker et il sert à sélectionner le début, tu vois un nom fort c'est pas dur à trouver et c'est pratique Dim mesDates As List(Of DateTime) = New List(Of DateTime) From {laDate} 'comme ça la liste est initialisée avec la première date While laDate < dtpFin.Value laDate = laDate.AddDays(1)'date suivante mesDates.Add(laDate)'on l'ajoute à la liste End While cbbLesDates.DataSource = mesDates 'et là le combobox affiche les dates, mais toi tu peux travailler avec la liste.
Et encore, avec Linq, ça s'écrit en 2 lignes qui s'exécutent encore plus vite.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Ah oui comme ça sa me parait simple je complique à chaque fois, je finis ça et pendant mes vacances je vais relire le tuto.
merci en tout cas
dans le code il y a un probléme je selection le 11 juillet au 13 juillet, pour teste il me place bien dans la combo le 11 ,12,13,14
Un peu sale peut être mais ça fonctionne
While laDateheure < dtpFin.Value.AddDays(-1)