Ce code n'a pas d'autre prétention que de faire un petit exemple de procédure. il n'est pas parfait niveau optimisation t pas forcement méga utile, mais peut etre pourra il un peu servir aux grands débutants.
A placer dans un module
Source / Exemple :
Sub ctrl_date(ByRef date_jjmmaaaa As String)
'les termes entre parenthèses signifient ke la procédure demandera 1 argument,
'qui sera interprété comme une string
'on verifie que l'argument n'est pas nul
If date_jjmmaaaa <> "" Then
'si on ne trouve pas le caractère / a la 3e et 6e position
If Not (Mid(date_jjmmaaaa, 3, 1) = "/" And Mid(date_jjmmaaaa, 6, 1) = "/") Then
'msgbox precisant le format necessaire
MsgBox "Date invalide" & vbCrLf & "La date doit avoir le format JJ/MM/AAAA" & vbCrLf & "Exemple: 07/02/2001", vbApplicationModal + vbInformation, "Erreur"
Else
If Not (CInt(Mid(date_jjmmaaaa, 7)) > Year(Now) Or CInt(Mid(date_jjmmaaaa, 7)) < 1800) Then
'selon le mois...
Select Case Mid(date_jjmmaaaa, 4, 2)
'si jan ou mars ou mai ou juillet ou aout ou oct ou dec
Case "01", "03", "05", "07", "08", "10", "12"
'alors si le jour est inferieur ou egal a 31, quitter la procédure
If CInt(Mid(date_jjmmaaaa, 1, 2)) <= 31 Then Exit Sub
'si avril juin septembre ou novembre...
Case "04", "06", "09", "11"
'alors si plus le jour est inferieur ou egal a 30, quitter la procedure
If CInt(Mid(date_jjmmaaaa, 1, 2)) <= 30 Then Exit Sub
'si mois de FEVRIER !
Case "02"
'on verifie si l'année est bisextile (elle est bisextile si divisée par 4 le resultat est entier...
'donc on compare le resultat entier de la division au resultat de la division..
'si c'est le meme, alors le resultat est entier ;)
If Int(Mid(date_jjmmaaaa, 7) / 4) = Mid(date_jjmmaaaa, 7) / 4 Then
'on verifie ensuite le n° de jours, si il est conforme a la limite de 29 ou 28
If CInt(Mid(date_jjmmaaaa, 1, 2)) <= 29 Then Exit Sub
Else
If CInt(Mid(date_jjmmaaaa, 1, 2)) <= 28 Then Exit Sub
End If
End Select
'si on n'a pas quitté la procédure c'est qu'il y a une erreur donc afficher une msgbox d'erreur
MsgBox "Date invalide" & vbCrLf & "La date doit avoir le format JJ/MM/AAAA" & vbCrLf & "Exemple: 07/02/2001", vbApplicationModal + vbInformation, "Erreur"
Else
MsgBox "Date invalide" & vbCrLf & "La date doit avoir le format JJ/MM/AAAA" & vbCrLf & "Exemple: 07/02/2001", vbApplicationModal + vbInformation, "Erreur"
End If
End If
End If
End Sub
Conclusion :
voila n'hésitez pas a commenter, pas besoin de "c nul ca sert a rien" paske g jamais dit le contraire :p
et si ca ne vous sert pas ca ne signifie pas que ca ne servira a personne
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.