Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
http://jacxl.free.fr
Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
j@c
http://jacxl.free.fr
Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
http://jacxl.free.fr
je copie la réponse de FxM ci-dessous, et je teste :
19 Feb 2008 13:51
FxM
Ton message sur MPFE
Bonjour Jacques,
Je ne peux pour l'instant me connecter en NNTP.
Une fonction développée pour transformer ce genre de date.
@+
FxM
Public Function decode_date(entree, Optional opt, Optional forma)
'transforme ...
'Mon, 2 may 2006 18:20:32 +0200
'en ... heure GMT sous forme connue d'Excel
'02/05/2006 16:20:32
'Stop
Dim tablo_mois, tablo_heure, result_dat, result_heure, entree_vraie
Dim heure As Integer, minute As Integer, x As Integer
entree_vraie = entree
On Error GoTo fin:
If Left(entree, 1) = " " Then entree = Right(entree, Len(entree) - 1)
If Not IsNumeric(Left(entree, 1)) Then entree = Right(entree,
Len(entree) -
InStr(1, entree, " "))
tablo_mois = Split(entree, " ")
Select Case UCase(tablo_mois(1))
Case "JAN", "JANUARY", "JANVIER": tablo_mois(1) = 1
Case "FEB", "FEBRUARY", "FEVRIER": tablo_mois(1) = 2
Case "MAR", "MARCH", "MARS": tablo_mois(1) = 3
Case "APR", "APRIL", "AVRIL": tablo_mois(1) = 4
Case "MAY", "MAI": tablo_mois(1) = 5
Case "JUN", "JUNE", "JUIN": tablo_mois(1) = 6
Case "JUL", "JULY", "JUILLET": tablo_mois(1) = 7
Case "AUG", "AUGUST", "AOUT", "AOÛT": tablo_mois(1) = 8
Case "SEP", "SEPTEMBER", "SEPTEMBRE": tablo_mois(1) = 9
Case "OCT", "OCTOBER", "OCTOBRE": tablo_mois(1) = 10
Case "NOV", "NOVEMBER", "NOVEMBRE": tablo_mois(1) = 11
Case "DEC", "DECEMBER", "DECEMBRE", UCase("Décembre"): tablo_mois(1) = 12
End Select
tablo_heure = Split(tablo_mois(3), ":")
result_dat = DateSerial(CInt(tablo_mois(2)), CInt(tablo_mois(1)),
CInt(tablo_mois(0)))
result_heure = TimeSerial(CInt(tablo_heure(0)), CInt(tablo_heure(1)),
CInt(tablo_heure(2)))
If UBound(tablo_mois) = 3 Then
heure = 0: minute = 0: x = 0
Else
If InStr(1, UCase(tablo_mois(4)), "GMT") > 0 Then
heure = 0: minute = 0: x = 0
Else
heure = CInt(Mid(tablo_mois(4), 2, 2)): minute = CInt(Mid(tablo_mois(4),
4,
2))
Select Case Left(tablo_mois(4), 1)
Case "+": x = -1
Case "-": x = 1
Case Else
End Select
End If
End If
'Stop
forma = Application.Substitute(forma, "a", "y")
forma = Application.Substitute(forma, "j", "d")
decode_date = Format(result_dat + result_heure + x * (heure / 24 + minute
/
24 / 60), forma)
Exit Function
fin:
decode_date = entree_vraie
On Error GoTo 0
End Function
"" a écrit dans le message de news:Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en
date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la
partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une
heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
http://jacxl.free.fr
je copie la réponse de FxM ci-dessous, et je teste :
19 Feb 2008 13:51
FxM
fxm@cestouvert.net
Ton message sur MPFE
Bonjour Jacques,
Je ne peux pour l'instant me connecter en NNTP.
Une fonction développée pour transformer ce genre de date.
@+
FxM
Public Function decode_date(entree, Optional opt, Optional forma)
'transforme ...
'Mon, 2 may 2006 18:20:32 +0200
'en ... heure GMT sous forme connue d'Excel
'02/05/2006 16:20:32
'Stop
Dim tablo_mois, tablo_heure, result_dat, result_heure, entree_vraie
Dim heure As Integer, minute As Integer, x As Integer
entree_vraie = entree
On Error GoTo fin:
If Left(entree, 1) = " " Then entree = Right(entree, Len(entree) - 1)
If Not IsNumeric(Left(entree, 1)) Then entree = Right(entree,
Len(entree) -
InStr(1, entree, " "))
tablo_mois = Split(entree, " ")
Select Case UCase(tablo_mois(1))
Case "JAN", "JANUARY", "JANVIER": tablo_mois(1) = 1
Case "FEB", "FEBRUARY", "FEVRIER": tablo_mois(1) = 2
Case "MAR", "MARCH", "MARS": tablo_mois(1) = 3
Case "APR", "APRIL", "AVRIL": tablo_mois(1) = 4
Case "MAY", "MAI": tablo_mois(1) = 5
Case "JUN", "JUNE", "JUIN": tablo_mois(1) = 6
Case "JUL", "JULY", "JUILLET": tablo_mois(1) = 7
Case "AUG", "AUGUST", "AOUT", "AOÛT": tablo_mois(1) = 8
Case "SEP", "SEPTEMBER", "SEPTEMBRE": tablo_mois(1) = 9
Case "OCT", "OCTOBER", "OCTOBRE": tablo_mois(1) = 10
Case "NOV", "NOVEMBER", "NOVEMBRE": tablo_mois(1) = 11
Case "DEC", "DECEMBER", "DECEMBRE", UCase("Décembre"): tablo_mois(1) = 12
End Select
tablo_heure = Split(tablo_mois(3), ":")
result_dat = DateSerial(CInt(tablo_mois(2)), CInt(tablo_mois(1)),
CInt(tablo_mois(0)))
result_heure = TimeSerial(CInt(tablo_heure(0)), CInt(tablo_heure(1)),
CInt(tablo_heure(2)))
If UBound(tablo_mois) = 3 Then
heure = 0: minute = 0: x = 0
Else
If InStr(1, UCase(tablo_mois(4)), "GMT") > 0 Then
heure = 0: minute = 0: x = 0
Else
heure = CInt(Mid(tablo_mois(4), 2, 2)): minute = CInt(Mid(tablo_mois(4),
4,
2))
Select Case Left(tablo_mois(4), 1)
Case "+": x = -1
Case "-": x = 1
Case Else
End Select
End If
End If
'Stop
forma = Application.Substitute(forma, "a", "y")
forma = Application.Substitute(forma, "j", "d")
decode_date = Format(result_dat + result_heure + x * (heure / 24 + minute
/
24 / 60), forma)
Exit Function
fin:
decode_date = entree_vraie
On Error GoTo 0
End Function
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
enG7fumcIHA.5984@TK2MSFTNGP06.phx.gbl...
Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en
date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la
partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une
heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
j@c
http://jacxl.free.fr
je copie la réponse de FxM ci-dessous, et je teste :
19 Feb 2008 13:51
FxM
Ton message sur MPFE
Bonjour Jacques,
Je ne peux pour l'instant me connecter en NNTP.
Une fonction développée pour transformer ce genre de date.
@+
FxM
Public Function decode_date(entree, Optional opt, Optional forma)
'transforme ...
'Mon, 2 may 2006 18:20:32 +0200
'en ... heure GMT sous forme connue d'Excel
'02/05/2006 16:20:32
'Stop
Dim tablo_mois, tablo_heure, result_dat, result_heure, entree_vraie
Dim heure As Integer, minute As Integer, x As Integer
entree_vraie = entree
On Error GoTo fin:
If Left(entree, 1) = " " Then entree = Right(entree, Len(entree) - 1)
If Not IsNumeric(Left(entree, 1)) Then entree = Right(entree,
Len(entree) -
InStr(1, entree, " "))
tablo_mois = Split(entree, " ")
Select Case UCase(tablo_mois(1))
Case "JAN", "JANUARY", "JANVIER": tablo_mois(1) = 1
Case "FEB", "FEBRUARY", "FEVRIER": tablo_mois(1) = 2
Case "MAR", "MARCH", "MARS": tablo_mois(1) = 3
Case "APR", "APRIL", "AVRIL": tablo_mois(1) = 4
Case "MAY", "MAI": tablo_mois(1) = 5
Case "JUN", "JUNE", "JUIN": tablo_mois(1) = 6
Case "JUL", "JULY", "JUILLET": tablo_mois(1) = 7
Case "AUG", "AUGUST", "AOUT", "AOÛT": tablo_mois(1) = 8
Case "SEP", "SEPTEMBER", "SEPTEMBRE": tablo_mois(1) = 9
Case "OCT", "OCTOBER", "OCTOBRE": tablo_mois(1) = 10
Case "NOV", "NOVEMBER", "NOVEMBRE": tablo_mois(1) = 11
Case "DEC", "DECEMBER", "DECEMBRE", UCase("Décembre"): tablo_mois(1) = 12
End Select
tablo_heure = Split(tablo_mois(3), ":")
result_dat = DateSerial(CInt(tablo_mois(2)), CInt(tablo_mois(1)),
CInt(tablo_mois(0)))
result_heure = TimeSerial(CInt(tablo_heure(0)), CInt(tablo_heure(1)),
CInt(tablo_heure(2)))
If UBound(tablo_mois) = 3 Then
heure = 0: minute = 0: x = 0
Else
If InStr(1, UCase(tablo_mois(4)), "GMT") > 0 Then
heure = 0: minute = 0: x = 0
Else
heure = CInt(Mid(tablo_mois(4), 2, 2)): minute = CInt(Mid(tablo_mois(4),
4,
2))
Select Case Left(tablo_mois(4), 1)
Case "+": x = -1
Case "-": x = 1
Case Else
End Select
End If
End If
'Stop
forma = Application.Substitute(forma, "a", "y")
forma = Application.Substitute(forma, "j", "d")
decode_date = Format(result_dat + result_heure + x * (heure / 24 + minute
/
24 / 60), forma)
Exit Function
fin:
decode_date = entree_vraie
On Error GoTo 0
End Function
"" a écrit dans le message de news:Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en
date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la
partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une
heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
http://jacxl.free.fr
resalut FxM
j'ai testé ta formule magique sur un paquet de dates que j'ai rencontrées
dans les RSS ;
MsgBox decode_date("Tue, 19 Feb 2008 19:01:26 Etc/GMT")
MsgBox decode_date("Tue, 19 Feb 2008 15:59:05 GMT")
MsgBox decode_date("2008-02-19T15:01:38-05:00")
MsgBox decode_date("Tue, 12 Feb 2008 12:56:30 -0600")
MsgBox decode_date("2/19/2008 12:27:43 PM")
MsgBox decode_date("Tue, 19 Feb 2008 16:31:00 GMT")
MsgBox decode_date("Fri, 15 Feb 2008 11:42 PST")
MsgBox decode_date("Tue, 19 Feb 2008 13:14 EST")
aucune idée de comment on convertit EST ou PST en GTM (je sens qu'il va
falloir ajouter un autre tableau de conversion.)...
quant à la traduction de 5/2/2008 en 2 mai plutot qu'en 5 février (on est en
anglais, en général, mais pas toujours)...
et puis les machins du genre "2008-02-19T15:01:38-05:00"...
je crains qu'il n'y ait plus qu'à attendre un peu de discipline de la part
des éditeurs de flux (on peut rêver !)
"" a écrit dans le message de news:je copie la réponse de FxM ci-dessous, et je teste :
19 Feb 2008 13:51
FxM
Ton message sur MPFE
Bonjour Jacques,
Je ne peux pour l'instant me connecter en NNTP.
Une fonction développée pour transformer ce genre de date.
@+
FxM
Public Function decode_date(entree, Optional opt, Optional forma)
'transforme ...
'Mon, 2 may 2006 18:20:32 +0200
'en ... heure GMT sous forme connue d'Excel
'02/05/2006 16:20:32
'Stop
Dim tablo_mois, tablo_heure, result_dat, result_heure, entree_vraie
Dim heure As Integer, minute As Integer, x As Integer
entree_vraie = entree
On Error GoTo fin:
If Left(entree, 1) = " " Then entree = Right(entree, Len(entree) - 1)
If Not IsNumeric(Left(entree, 1)) Then entree = Right(entree,
Len(entree) -InStr(1, entree, " "))
tablo_mois = Split(entree, " ")
Select Case UCase(tablo_mois(1))
Case "JAN", "JANUARY", "JANVIER": tablo_mois(1) = 1
Case "FEB", "FEBRUARY", "FEVRIER": tablo_mois(1) = 2
Case "MAR", "MARCH", "MARS": tablo_mois(1) = 3
Case "APR", "APRIL", "AVRIL": tablo_mois(1) = 4
Case "MAY", "MAI": tablo_mois(1) = 5
Case "JUN", "JUNE", "JUIN": tablo_mois(1) = 6
Case "JUL", "JULY", "JUILLET": tablo_mois(1) = 7
Case "AUG", "AUGUST", "AOUT", "AOÛT": tablo_mois(1) = 8
Case "SEP", "SEPTEMBER", "SEPTEMBRE": tablo_mois(1) = 9
Case "OCT", "OCTOBER", "OCTOBRE": tablo_mois(1) = 10
Case "NOV", "NOVEMBER", "NOVEMBRE": tablo_mois(1) = 11
Case "DEC", "DECEMBER", "DECEMBRE", UCase("Décembre"): tablo_mois(1) = 12
End Select
tablo_heure = Split(tablo_mois(3), ":")
result_dat = DateSerial(CInt(tablo_mois(2)), CInt(tablo_mois(1)),
CInt(tablo_mois(0)))
result_heure = TimeSerial(CInt(tablo_heure(0)), CInt(tablo_heure(1)),
CInt(tablo_heure(2)))
If UBound(tablo_mois) = 3 Then
heure = 0: minute = 0: x = 0
Else
If InStr(1, UCase(tablo_mois(4)), "GMT") > 0 Then
heure = 0: minute = 0: x = 0
Else
heure = CInt(Mid(tablo_mois(4), 2, 2)): minute = CInt(Mid(tablo_mois(4),
4,2))
Select Case Left(tablo_mois(4), 1)
Case "+": x = -1
Case "-": x = 1
Case Else
End Select
End If
End If
'Stop
forma = Application.Substitute(forma, "a", "y")
forma = Application.Substitute(forma, "j", "d")
decode_date = Format(result_dat + result_heure + x * (heure / 24 + minute
/24 / 60), forma)
Exit Function
fin:
decode_date = entree_vraie
On Error GoTo 0
End Function
"" a écrit dans le message de news:Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en
dateExcel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la
partiedroite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une
heurede Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
http://jacxl.free.fr
resalut FxM
j'ai testé ta formule magique sur un paquet de dates que j'ai rencontrées
dans les RSS ;
MsgBox decode_date("Tue, 19 Feb 2008 19:01:26 Etc/GMT")
MsgBox decode_date("Tue, 19 Feb 2008 15:59:05 GMT")
MsgBox decode_date("2008-02-19T15:01:38-05:00")
MsgBox decode_date("Tue, 12 Feb 2008 12:56:30 -0600")
MsgBox decode_date("2/19/2008 12:27:43 PM")
MsgBox decode_date("Tue, 19 Feb 2008 16:31:00 GMT")
MsgBox decode_date("Fri, 15 Feb 2008 11:42 PST")
MsgBox decode_date("Tue, 19 Feb 2008 13:14 EST")
aucune idée de comment on convertit EST ou PST en GTM (je sens qu'il va
falloir ajouter un autre tableau de conversion.)...
quant à la traduction de 5/2/2008 en 2 mai plutot qu'en 5 février (on est en
anglais, en général, mais pas toujours)...
et puis les machins du genre "2008-02-19T15:01:38-05:00"...
je crains qu'il n'y ait plus qu'à attendre un peu de discipline de la part
des éditeurs de flux (on peut rêver !)
J@C
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
eHeJckycIHA.5900@TK2MSFTNGP02.phx.gbl...
je copie la réponse de FxM ci-dessous, et je teste :
19 Feb 2008 13:51
FxM
fxm@cestouvert.net
Ton message sur MPFE
Bonjour Jacques,
Je ne peux pour l'instant me connecter en NNTP.
Une fonction développée pour transformer ce genre de date.
@+
FxM
Public Function decode_date(entree, Optional opt, Optional forma)
'transforme ...
'Mon, 2 may 2006 18:20:32 +0200
'en ... heure GMT sous forme connue d'Excel
'02/05/2006 16:20:32
'Stop
Dim tablo_mois, tablo_heure, result_dat, result_heure, entree_vraie
Dim heure As Integer, minute As Integer, x As Integer
entree_vraie = entree
On Error GoTo fin:
If Left(entree, 1) = " " Then entree = Right(entree, Len(entree) - 1)
If Not IsNumeric(Left(entree, 1)) Then entree = Right(entree,
Len(entree) -
InStr(1, entree, " "))
tablo_mois = Split(entree, " ")
Select Case UCase(tablo_mois(1))
Case "JAN", "JANUARY", "JANVIER": tablo_mois(1) = 1
Case "FEB", "FEBRUARY", "FEVRIER": tablo_mois(1) = 2
Case "MAR", "MARCH", "MARS": tablo_mois(1) = 3
Case "APR", "APRIL", "AVRIL": tablo_mois(1) = 4
Case "MAY", "MAI": tablo_mois(1) = 5
Case "JUN", "JUNE", "JUIN": tablo_mois(1) = 6
Case "JUL", "JULY", "JUILLET": tablo_mois(1) = 7
Case "AUG", "AUGUST", "AOUT", "AOÛT": tablo_mois(1) = 8
Case "SEP", "SEPTEMBER", "SEPTEMBRE": tablo_mois(1) = 9
Case "OCT", "OCTOBER", "OCTOBRE": tablo_mois(1) = 10
Case "NOV", "NOVEMBER", "NOVEMBRE": tablo_mois(1) = 11
Case "DEC", "DECEMBER", "DECEMBRE", UCase("Décembre"): tablo_mois(1) = 12
End Select
tablo_heure = Split(tablo_mois(3), ":")
result_dat = DateSerial(CInt(tablo_mois(2)), CInt(tablo_mois(1)),
CInt(tablo_mois(0)))
result_heure = TimeSerial(CInt(tablo_heure(0)), CInt(tablo_heure(1)),
CInt(tablo_heure(2)))
If UBound(tablo_mois) = 3 Then
heure = 0: minute = 0: x = 0
Else
If InStr(1, UCase(tablo_mois(4)), "GMT") > 0 Then
heure = 0: minute = 0: x = 0
Else
heure = CInt(Mid(tablo_mois(4), 2, 2)): minute = CInt(Mid(tablo_mois(4),
4,
2))
Select Case Left(tablo_mois(4), 1)
Case "+": x = -1
Case "-": x = 1
Case Else
End Select
End If
End If
'Stop
forma = Application.Substitute(forma, "a", "y")
forma = Application.Substitute(forma, "j", "d")
decode_date = Format(result_dat + result_heure + x * (heure / 24 + minute
/
24 / 60), forma)
Exit Function
fin:
decode_date = entree_vraie
On Error GoTo 0
End Function
"j@c" <bidon@bidon.fr> a écrit dans le message de news:
enG7fumcIHA.5984@TK2MSFTNGP06.phx.gbl...
Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en
date
Excel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la
partie
droite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une
heure
de Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
j@c
http://jacxl.free.fr
resalut FxM
j'ai testé ta formule magique sur un paquet de dates que j'ai rencontrées
dans les RSS ;
MsgBox decode_date("Tue, 19 Feb 2008 19:01:26 Etc/GMT")
MsgBox decode_date("Tue, 19 Feb 2008 15:59:05 GMT")
MsgBox decode_date("2008-02-19T15:01:38-05:00")
MsgBox decode_date("Tue, 12 Feb 2008 12:56:30 -0600")
MsgBox decode_date("2/19/2008 12:27:43 PM")
MsgBox decode_date("Tue, 19 Feb 2008 16:31:00 GMT")
MsgBox decode_date("Fri, 15 Feb 2008 11:42 PST")
MsgBox decode_date("Tue, 19 Feb 2008 13:14 EST")
aucune idée de comment on convertit EST ou PST en GTM (je sens qu'il va
falloir ajouter un autre tableau de conversion.)...
quant à la traduction de 5/2/2008 en 2 mai plutot qu'en 5 février (on est en
anglais, en général, mais pas toujours)...
et puis les machins du genre "2008-02-19T15:01:38-05:00"...
je crains qu'il n'y ait plus qu'à attendre un peu de discipline de la part
des éditeurs de flux (on peut rêver !)
"" a écrit dans le message de news:je copie la réponse de FxM ci-dessous, et je teste :
19 Feb 2008 13:51
FxM
Ton message sur MPFE
Bonjour Jacques,
Je ne peux pour l'instant me connecter en NNTP.
Une fonction développée pour transformer ce genre de date.
@+
FxM
Public Function decode_date(entree, Optional opt, Optional forma)
'transforme ...
'Mon, 2 may 2006 18:20:32 +0200
'en ... heure GMT sous forme connue d'Excel
'02/05/2006 16:20:32
'Stop
Dim tablo_mois, tablo_heure, result_dat, result_heure, entree_vraie
Dim heure As Integer, minute As Integer, x As Integer
entree_vraie = entree
On Error GoTo fin:
If Left(entree, 1) = " " Then entree = Right(entree, Len(entree) - 1)
If Not IsNumeric(Left(entree, 1)) Then entree = Right(entree,
Len(entree) -InStr(1, entree, " "))
tablo_mois = Split(entree, " ")
Select Case UCase(tablo_mois(1))
Case "JAN", "JANUARY", "JANVIER": tablo_mois(1) = 1
Case "FEB", "FEBRUARY", "FEVRIER": tablo_mois(1) = 2
Case "MAR", "MARCH", "MARS": tablo_mois(1) = 3
Case "APR", "APRIL", "AVRIL": tablo_mois(1) = 4
Case "MAY", "MAI": tablo_mois(1) = 5
Case "JUN", "JUNE", "JUIN": tablo_mois(1) = 6
Case "JUL", "JULY", "JUILLET": tablo_mois(1) = 7
Case "AUG", "AUGUST", "AOUT", "AOÛT": tablo_mois(1) = 8
Case "SEP", "SEPTEMBER", "SEPTEMBRE": tablo_mois(1) = 9
Case "OCT", "OCTOBER", "OCTOBRE": tablo_mois(1) = 10
Case "NOV", "NOVEMBER", "NOVEMBRE": tablo_mois(1) = 11
Case "DEC", "DECEMBER", "DECEMBRE", UCase("Décembre"): tablo_mois(1) = 12
End Select
tablo_heure = Split(tablo_mois(3), ":")
result_dat = DateSerial(CInt(tablo_mois(2)), CInt(tablo_mois(1)),
CInt(tablo_mois(0)))
result_heure = TimeSerial(CInt(tablo_heure(0)), CInt(tablo_heure(1)),
CInt(tablo_heure(2)))
If UBound(tablo_mois) = 3 Then
heure = 0: minute = 0: x = 0
Else
If InStr(1, UCase(tablo_mois(4)), "GMT") > 0 Then
heure = 0: minute = 0: x = 0
Else
heure = CInt(Mid(tablo_mois(4), 2, 2)): minute = CInt(Mid(tablo_mois(4),
4,2))
Select Case Left(tablo_mois(4), 1)
Case "+": x = -1
Case "-": x = 1
Case Else
End Select
End If
End If
'Stop
forma = Application.Substitute(forma, "a", "y")
forma = Application.Substitute(forma, "j", "d")
decode_date = Format(result_dat + result_heure + x * (heure / 24 + minute
/24 / 60), forma)
Exit Function
fin:
decode_date = entree_vraie
On Error GoTo 0
End Function
"" a écrit dans le message de news:Bonjour,
Petit problème de dates.
Je baigne dans les flux RSS. En UTF-8, les dates sont affichées sous la
forme : Mon, 18 Feb 2008 19:16:50 +0100 (dans le meilleur des cas).
Y a-t-il un moyen simple en VBA pour convertir une date de ce type en
dateExcel ?
J'ai bien bricolé un truc en retirant la partie gauche (jour) et la
partiedroite (le décalage horaire) et en remplaçant "Feb" par "fév"...
(et en prévoyant le cas où la date est en "02-18-2008")
Ca marche, mais ça n'est vraiment pas propre... (et puis si j'ai une
heurede Californie...)
Si vous connaissez une fonction ad hoc, je suis preneur !
d'avance merci
http://jacxl.free.fr