Déclaration et normalisation de fonction
Bonjour,
Je déclare ma feuille active comme public
Code:
Public Feuilleactive As String
que je déclare à initialisation du l'userform
Dans un textbox exit je met le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Sub TxtDateDeb_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TxtDateColoration TxtDateDeb.Value, "TxtDateDeb"
If TxtDateDeb.BackColor = &HFFFFFF Then
'On masque/affiche la label d'avertissement
LblInvalid.Visible = False
'On détermine l'activation du bouton Rechercher
EnableFindBt
Else
LblInvalid.Visible = True
End If
End Sub |
Celui-ci fais appel une macro en public :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Public Sub TxtDateColoration(Date1 As String, Textbox As String)
Dim ValidDate As Boolean, ValidFin As Boolean
'On définie la couleur du fond en fonction du texte tapé
'Le fond sera blanc si
'Le texte est vide
'La date est valide
'le checkBox option date est décoché
'Attention par contre avec IsDate, il reconnait 11/15/2018 comme une date valide à cause de l'écriture anglosaxonne Mois/Jour/Année
'Je te laise implémenter ta solution à la place si tu le souhaites
ValidDeb = DateValide(Date1)
'On met en place la coloration
Feuilleactive.Textbox.BackColor = IIf(ValidDate, &HFFFFFF, &HFF&)
End Sub |
qui elle même fais appel a une fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Function DateValide(strDate As String) As Boolean
Dim TabDate As Variant
Dim YearValue As Long
Dim MonthValue As Long
Dim DayValue As Long
DateValide = True
If Not strDate Like "##/##/####" And Not strDate Like "##-##-####" Then
DateValide = False
Else
'On extrait les 3 parties
TabDate = Split(strDate, "/")
YearValue = TabDate(2)
MonthValue = TabDate(1)
DayValue = TabDate(0)
'On vérifie le retour de isdate()
If YearValue < 1900 Then
DateValide = False
Else
Select Case MonthValue
Case 1, 3, 5, 7, 8, 10, 12
If DayValue > 31 Then DateValide = False
Case 4, 6, 9, 11
If DayValue > 30 Then DateValide = False
Case 2
If YearValue Mod 400 = 0 Or (YearValue Mod 100 <> 0 And YearValue Mod 4 = 0) Then
If DayValue > 29 Then DateValide = False
Else
If DayValue > 28 Then DateValide = False
End If
Case Else
If strDate <> "" Then
DateValide = False
Else
DateValide = True
End If
End Select
End If
End If
End Function |
Sauf que à la partie :
Code:
Public Sub TxtDateColoration(Date1 As String, Textbox As String)
Cela ne fonctionne pas quelqu'un peux m'aider ?
Cordialement,
Passepartout007