Bonjour,
Je déclare ma feuille active comme public
que je déclare à initialisation du l'userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Feuilleactive As String
Dans un textbox exit je met le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
qui elle même fais appel a une fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Sauf que à la partie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Cela ne fonctionne pas quelqu'un peux m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Sub TxtDateColoration(Date1 As String, Textbox As String)
Cordialement,
Passepartout007
Partager