Conversion date /vba-- access

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 713 fois - Téléchargée 29 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
Messages postés
1
Date d'inscription
lundi 19 juin 2006
Statut
Membre
Dernière intervention
19 juin 2006

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 :)
Messages postés
1
Date d'inscription
jeudi 31 juillet 2003
Statut
Membre
Dernière intervention
19 juillet 2005

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.
Messages postés
185
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
20 juin 2013

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
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
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.