Bonjour à tous,
Voila, dévellopant un Répertoire d'adresse SQL que je voudrais le plus pratique possible, je me suis rendu compte que la saisie des dates (de naissance en l'occurence)pouvait être vite pénible par la nécessité de respecter un format xx/xx/xx ou xx/xx/xxxx avec les séparateurs.
J'ai donc dévelloper une fonction (niveau débutant, que je suis)qui assure un format identique quelques soit la saisie,donc:
un 22?10@1972 ou 22101972 donnera 22/10/1972
un 22a10%72 ou 221072 donnera 22/10/72
Voilà
Source / Exemple :
Function ConverDate(DateN As String) As String
Dim LongN As Integer
Dim Index As Integer
Dim Coupe As String
Dim DNais As String
LongN = Len(DateN)
If LongN = 0 Then Exit Function
' On ne retient que les chiffres
For Index = 1 To LongN
'On extrait un caractere
Coupe = Right(DateN, 1)
'on verifie qu'il s'agit d'un chiffre
If Asc(Coupe) > 47 And Asc(Coupe) < 58 Then
DNais = Coupe & DNais
End If
'on soustrait le caractere extrait
DateN = Left(DateN, LongN - Index)
Next Index
' On verifie le format du resultat '*******************
LongN = Len(DNais)
If LongN = 6 Then ' format 22/10/72
GoTo Reconstruction6
Else
If LongN = 8 Then
GoTo Reconstruction8 ' format 22/10/1972
Else
GoTo erreur
End If
End If
Reconstruction6: 'pour les date au format 01/01/01*******************
DateN = ""
For Index = 2 To LongN Step 2
'On extrait deux caracteres
Coupe = Right(DNais, 2)
If Len(DateN) < 2 Then
'On recontruit l'année au format voulu
DateN = Coupe
Else
If Len(DateN) = 2 Then 'Gestion du mois
If Val(Coupe) = 0 Or Val(Coupe) > 12 Then GoTo erreur
'On recontruit le mois
DateN = Coupe & "/" & DateN
Else 'Gestion du jour
If Val(Coupe) = 0 Or Val(Coupe) > 31 Then GoTo erreur
'On recontruit le jour
DateN = Coupe & "/" & DateN
End If
End If
'on supprime de la date source la partie extraite
DNais = Left(DNais, LongN - Index)
Next Index
ConverDate = DateN
Exit Function
Reconstruction8: 'pour les date au format 01/01/1901 ***************
DateN = ""
For Index = 2 To LongN Step 2
'On extrait deux caracteres
Coupe = Right(DNais, 2)
If Len(DateN) < 4 Then
'On recontruit l'année au format "1990"
DateN = Coupe & DateN
Else
If DateN > Year(Date) Then GoTo erreur2
If Len(DateN) = 4 Then 'Gestion du mois
If Val(Coupe) = 0 Or Val(Coupe) > 12 Then GoTo erreur
'On recontruit le mois
DateN = Coupe & "/" & DateN
Else 'Gestion du jour
If Val(Coupe) = 0 Or Val(Coupe) > 31 Then GoTo erreur
'On recontruit le jour
DateN = Coupe & "/" & DateN
End If
End If
'on supprime de la date source la partie extraite
DNais = Left(DNais, LongN - Index)
Next Index
'On renvoi le resultat
ConverDate = DateN
Exit Function
erreur: '************************************************************
erreur = MsgBox("Le format de la date n'est pas valide.")
erreur2: '***********************************************************
erreur2 = MsgBox("Ce jour n'est pas encore arrivé.")
End Function
Conclusion :
Voila,
C'est la premiere source que je poste, n'hésitez pas à être critique, et me dire comment vous auriez géré ou amélioré ça.
J'attends vos avis ...
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.