Bonsoir,
tout ce joue dans cette partie de code du USF du calendrier, c'est la fonction qui est appelée par :
UnJour = FormCal.Calendrier
UnJour est égal au résultat de la fonction Calendrier du USF FormCal,
hors cette fonction accepte un paramètre optionnel (qui n'est pas utilisé) qui fait que le calendrier peut être ouvert avec une date autre que aujourd'hui (surligné ci dessous) :
Voici la partie à modifier :
Function Calendrier(Optional DateInitiale As Date) As Date
StopEvent = True
If DateInitiale <> 0 Then
Jour = DateInitiale
Else
Jour = Now
End If
StopEvent = False
FormCal.Show
Calendrier = Jour
End Function
L'idée serait de créer une variable globale Date_Deb_Entrée As Boolean
qui serait à True si on a entré une date de début et à False si ce n'est pas le cas,
du coup on aurait ceci en appel de fonction :
Sub AfficheDateSaisie()
Dim UnJour As Date
If Date_Deb_Entrée = True Then
UnJour = FormCal.Calendrier(CDate(TextBoxDebut.Value))
Else
UnJour = FormCal.Calendrier
End If
If UnJour = 0 Then
MsgBox "Veuillez saisir une date"
Else
Dte = UnJour
End If
End Sub
Au début du Module1 il faut créer la variable globale :
Public Date_Deb_Entrée As Boolean
Ensuite il faut passer cette variable à False lorsque le USF se ferme, ou quand on efface le contenu de la TextBoxDebut et à True si une date est entrée
Private Sub TextBoxDebut_Change()
If TextBoxDebut.Value = "" Then ' correction faite suite remarque pertinente de @dhany
Date_Deb_Entrée = False
Else
Date_Deb_Entrée = True
End If
End Sub
et
ThenPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Date_Deb_Entrée = False
End Sub
A vous de tout remettre au bon endroit pour voir si cela fonctionne
@ bientôt
LouReeD