Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de conversion de date

4 réponses
Avatar
Belgacom
Bonjour à tous,

J'aimerai transformer une date qui se trouve sous la forme "20 mai 2008" au
format string en "20/05/2008", j'ai essayé avec Cdate, Format mais j'obtiens
toujours une erreur "mismatch".

Merci par avance pour vos réponses.

4 réponses

Avatar
Eric
Bonjour,

(Il doit peut-être exister des trucs plus simples)

Essaies avec cette fonction à copier dans un module, fonction que tu
pourras utiliser dans une requête, formulaire, ... :

Public Function DateLittVersDate(UneChaine As Variant) As Date
'Gère l'absence des accents sur les nom des mois
If IsNull(UneChaine) Or Len(UneChaine) = 0 Then Exit Function
Dim pos1 As Byte, pos2 As Byte
Dim strAnnee As String, strMois As String, strJour As String
Dim strRangMois As String
pos1 = InStr(UneChaine, " ")
pos2 = InStrRev(UneChaine, " ")
strJour = Left(UneChaine, pos1 - 1)
strAnnee = Mid(UneChaine, pos2 + 1)
strMois = Mid(UneChaine, pos1 + 1, pos2 - pos1 - 1)
strRangMois = Switch(strMois = "Janvier", "1", _
strMois = "Février" Or strMois = "Fevrier", "2", _
strMois = "Mars", "3", _
strMois = "Avril", "4", strMois = "Mai", "5", _
strMois = "Juin", "6", strMois = "Juillet", "7", _
strMois = "Août" Or strMois = "Aout", "8", _
strMois = "Septembre", "9", strMois = "Octobre", "10", _
strMois = "Novembre", "11", _
strMois = "Décembre" Or strMois = "Decembre", "12")
DateLittVersDate = DateSerial(Val(strAnnee), _
Val(strRangMois), Val(strJour))
End Function

Debug.Print DateLittVersDate("20 mai 2008") retourne 20/05/2008
Debug.Print DateLittVersDate("5 aout 2008") retourne 05/08/2008

PS: je n'ai pas envisagé que les 1ers du mois soient codés 1er comme par
exemple: 1er mai 2008.
Pas de gestion d'erreur si tu tapes quelque chose qui n'est pas une date
littérale.


Bonjour à tous,

J'aimerai transformer une date qui se trouve sous la forme "20 mai 2008" au
format string en "20/05/2008", j'ai essayé avec Cdate, Format mais j'obtiens
toujours une erreur "mismatch".

Merci par avance pour vos réponses.





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Raymond [mvp]
Bonjour.

ce format est un format de date reconnu par access et peut être utilisé dans
format directement et les conversions:
essaie:
Dim Ladate As String
Ladate = "20 mai 2008"
MsgBox Format(Ladate, "dd/mm/yyyy")
ça doit t'afficher 20/05/2008

tu peux utiliser aussi:
Dim Ladate As String
Ladate = "20 mai 2008"
MsgBox Format(CDate(Ladate), "dd/mm/yyyy")
mais ça ne sert à rien.

tu peux faire aussi plus simple:
Dim Ladate As String
Ladate = "20 mai 2008"
MsgBox CDate(Ladate)
qui affichera 20/05/2008

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Belgacom" a écrit dans le message de news:
483335e3$0$2946$
| Bonjour à tous,
|
| J'aimerai transformer une date qui se trouve sous la forme "20 mai 2008"
au
| format string en "20/05/2008", j'ai essayé avec Cdate, Format mais
j'obtiens
| toujours une erreur "mismatch".
|
| Merci par avance pour vos réponses.
|
|
|
Avatar
Eric
Bonjour Raymond,

C'est bien ce que je disais
doit ... exister des trucs plus simples


Mais j'avais pas tester Format ni CDate en fonction de l'info donnée par
Belgacom.
Juste une petite remarque, si les accents sont omis, on récupère le
texte ou une erreur suivant la fonction.

Bonjour.

ce format est un format de date reconnu par access et peut être utilisé dans
format directement et les conversions:
essaie:
Dim Ladate As String
Ladate = "20 mai 2008"
MsgBox Format(Ladate, "dd/mm/yyyy")
ça doit t'afficher 20/05/2008

tu peux utiliser aussi:
Dim Ladate As String
Ladate = "20 mai 2008"
MsgBox Format(CDate(Ladate), "dd/mm/yyyy")
mais ça ne sert à rien.

tu peux faire aussi plus simple:
Dim Ladate As String
Ladate = "20 mai 2008"
MsgBox CDate(Ladate)
qui affichera 20/05/2008



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Raymond [mvp]
Bonjour eric.

c'est encore plus simple que ça. aucune erreur tolérée.
les noms de mois doivent être indiqués avec le bon accent sinon il n'y aura
pas de conversion de la donnée en date.
exemple:
Dim Ladate As String
Ladate = "20 dècembre 2008"
MsgBox Format(Ladate, "dd/mm/yyyy")
affichera 20 dècembre 2008
seul décembre avec l'accent aigu est accepté.

de même:
Dim Ladate As String
Ladate = "20 december 2008"
MsgBox Format(Ladate, "dd/mm/yyyy")
affichera 20 december 2008


--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Eric" a écrit dans le message de news:
%
| Bonjour Raymond,
|
| C'est bien ce que je disais
| > doit ... exister des trucs plus simples
|
| Mais j'avais pas tester Format ni CDate en fonction de l'info donnée par
| Belgacom.
| Juste une petite remarque, si les accents sont omis, on récupère le
| texte ou une erreur suivant la fonction.
|