Bonjour,

Je déclare ma feuille active comme public
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Feuilleactive As String
que je déclare à initialisation du l'userform

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 :
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
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
Public Sub TxtDateColoration(Date1 As String, Textbox As String)
Cela ne fonctionne pas quelqu'un peux m'aider ?

Cordialement,
Passepartout007