cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
Modifié par pijaku le 9/08/2016 à 13:50
Whismeril
Messages postés19144Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention16 septembre 2024
-
2 août 2016 à 11:47
Bonjour,
Je pilote excel via le vb.net
j'ai une liste de string que je remplis avec des strings représentant une date
dd/mm/yy
quand je copie la liste dans le classeur j'obtiens certains string sans les /
27/9/2015
28/9/2015
29/9/2015
30/9/2015
10 01 2015
10 02 2015
10 03 2015
10 04 2015
10 05 2015
10 10 2015
le code
private list1 as new list (of string)
Private gr As New CultureInfo("en-US")
gr.DateTimeFormat.Calendar = New GregorianCalendar()
Private Function SetGregorianDate(lastdate As DateTime) As String
Dim y, m, d As Integer
y = gr.DateTimeFormat.Calendar.GetYear(lastdate)
m = gr.DateTimeFormat.Calendar.GetMonth(lastdate)
d = gr.DateTimeFormat.Calendar.GetDayOfMonth(lastdate)
Return (d.ToString & "/" & m.ToString & "/" & y.ToString).ToString
End Function
private sub FillList1
dim d1 as datetime
for iter = 1 to 10
d1 = date.now
list1.add(SetGregorianDate(d1))
d1 = d1.AddDays(1)
next
end sub
With xlworksheet
indexcol = 1
indexrow = 3
For Each item As string In list1
.Cells(indexrow, indexcol) = item
indexrow += 1
Next
Whismeril
Messages postés19144Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention16 septembre 2024660 2 août 2016 à 00:01
Bonsoir
et si au lieu d'envoyer une liste de string tu envoyais une liste de DateTime?
Et ton code est bien compliqué pour pas grand chose au final.
d.ToString & "/" & m.ToString & "/" & y.ToString
Ça c'est un string, y ajouter ToString ne sert à rien
D'ailleurs ta fonction SetGregorianDate ne sert à rien.
d1.ToShortDateString()
Fait presque la même chose, en effet d1.ToShortDateString() retourne "01/08/2016", au lieu de "1/8/2016" (c'est d'ailleurs peut être ça qu'excel n'aime pas).
Et si vraiment tu veux "1/8/2016", et bien
d1.ToString("d/M/yyyy")
Et quand bien même, si tu veux le numéro du jour, du moi ou de l'année, pas la peine de passer par tous ces artifices,
y = d1.Year
m = d1.Month
d = d1.Day
Enfin dans la méthode FillList1, d1 est initialisé à aujourd'hui en début de boucle, puis ajouté dans la liste et ensuite passé à demain, et on réintère,
Ajourd'hui, liste, demain
Ajourd'bui....
et que le format de la date courte du windows n'est pas dd/mm/yy
je n'obtiens pas ce que je veux
Whismeril
Messages postés19144Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention16 septembre 2024660
>
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019 2 août 2016 à 11:47
Si avec d1.ToString(Description du format) tu peux choisir complètement le format que tu veux.
Modifié par cs_ShayW le 2/08/2016 à 01:40
Et quand bien même, si tu veux le numéro du jour, du moi ou de l'année, pas la peine de passer par tous ces artifices,
c'est vrai je me complique
il suffit d'ajouter