Exemple de procédure - controle d'un format de date

Contenu du snippet

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

A voir également

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.