Conversion date /vba-- access

0/5 (4 avis)

Snippet vu 19 856 fois - Téléchargée 30 fois

Contenu du snippet

Petite fonction que je me sert dans mes requêtes. Elle convertie une chaîne de caractère au format date.
Les données à convertir sont de la forme "20050610" -->année, mois, jour

Source / Exemple :


Public Function DatePandore(mydate As string) as Date
'Conversion au format date
On Error GoTo err_Date
    If IsNull(mydate) Then
        DatePandore = ""
    Else
        DatePandore = Right(mydate, 2) & "/" & Mid(mydate, 5, 2) & "/" & Left(mydate, 4)
    End If
exit_err:
    Exit Function
err_Date:
    MsgBox "L'erreur suivante :" & vbCrLf & Err.Number & " " & Err.Description & vbCrLf & _
        "s'est produite dans la fonction DatePandore", vbCritical, "NetJoao"
    Resume exit_err
End Function

Conclusion :


Si quelqu'un a mieux, qu'il le fasse savoir ?
Utilisation de la fonction :
DatePandore([Champ])
Voilà c'est très basic, mais ça me sert bien.

A voir également

Ajouter un commentaire Commentaires
eowyn_
Messages postés
1
Date d'inscription
lundi 19 juin 2006
Statut
Membre
Dernière intervention
19 juin 2006

19 juin 2006 à 15:31
Salut,
pour ton problème d'inversion jour:année, tu dois remplacer
DatePandore = Right(mydate, 2) & "/" & Mid(mydate, 5, 2) & "/" & Left(mydate, 4)
par
DatePandore = Left(mydate, 2) & "/" & Mid(mydate, 3, 2) & "/" & Right(mydate, 4)
enfin... je crois :)
erramiahmed
Messages postés
1
Date d'inscription
jeudi 31 juillet 2003
Statut
Membre
Dernière intervention
19 juillet 2005

19 juil. 2005 à 16:08
Salut, j'ai utilisé votre fonction dans un module MS Access. J'extrais des dates ( plus d'autres données ) à partir d'un fichier texte et je stock le tout dans une table. Mais j'ai un petit problème, la date une fois stockée le jour se transforme en année et l'année en jour (exemple "30/06/2005" ---> 05/06/1930 !!! ).
La requete utilisée a l'allure suivante :
DoCmd.RunSql " insert into ... values (" & date & "," & ... & ")".
Dernière chose : la fonction integrée à Access nommée CDate fait exactement la même tâche.
yan35
Messages postés
185
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
20 juin 2013

10 juin 2005 à 11:07
Tu pouvais aussi faire :

Public Function DatePandore(mydate As String) As Date
'Conversion au format date
On Error GoTo err_Date
If IsNull(mydate) Then
DatePandore = ""
Else
DatePandore = Format(mydate, "0000\/00\/00")
End If
Exit Function
err_Date:
MsgBox "L'erreur suivante :" & vbCrLf & Err.Number & " " & Err.Description & vbCrLf & _
"s'est produite dans la fonction DatePandore", vbCritical, "NetJoao"
End Function
econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
23
10 juin 2005 à 10:36
En 2 lignes de moins. Le Resume sur le label exit_err ne sert à rien. Après le traitement d'erreur, c'est la ligne 'End Function' qui est interprétée, et donc on sort de la fonction. Pas besoin de faire un Goto sur le label exit_err puis de sortir par 'Exit Function'.
Bref, une optimisation de 2 lignes :o)



1. Public Function DatePandore(mydate As string) as Date
2. 'Conversion au format date
3. On Error GoTo err_Date
4. If IsNull(mydate) Then
5. DatePandore = ""
6. Else
7. DatePandore = Right(mydate, 2) & "/" & Mid(mydate, 5, 2) & "/" & Left(mydate, 4)
8. End If
10. Exit Function
11. err_Date:
12. MsgBox "L'erreur suivante :" & vbCrLf & Err.Number & " " & Err.Description & vbCrLf & _
13. "s'est produite dans la fonction DatePandore", vbCritical, "NetJoao"
15. End Function

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.