Assignation d'une valeur dans un DTPicker (Excel/VBA)

miko96 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je commence à utiliser les DTPicker dans un Userform et je rencontre un petit problème: je n'arrive pas à forcer la date affichée.

Le principe de mon Userform:
Après ouverture, on rentre deux dates dedans DateDebut et DateFin (2 DTPicker) pour donner une plage de temps et un mot dans une CoboBox.
Je récupère ces infos dans des variables publiques dans un module qui sert à déclarer mes variables publiques justement (je ne lance pas automatiquement ce module, car il n'y a rien d'autre que mes 3 variables publiques), est-ce que ça peux jouer?)

Mon module:

Public Debut As Date
Public Fin As Date
Public Nom As String

Quand je valide les informations dans le Userform, j'ai mis plusieurs vérifications en place. Si il y a une erreur à corriger, le Userform est ouvert à nouveau.
(CBNom est la ComboBox et le Userform est nommé UF_Entree)

Ligne de code du bouton "Valider" (j'ai mis uniquement la partie sur une vérif); code placé dans le Userform:

Sub btnValider_Click()

Debut = DateDebut.Value
Fin = DateFin.Value
Nom = CBNom.Value

Unload Me

'Vérif
If Debut > Fin Then
MsgBox "La date de début de congé est après la date de fin du cougé!", vbOKOnly, "Attention!"
UF_Entree.Show
DateDebut.Value = Debut
DateFin.Value = Fin
CBNom.Value = Nom
End If

...

End Sub


J'ai au préalable essayé avec les variables déclarées dans la Sub, sans succès. J'ai aussi tenté de rentrer la date du jour
DateDebut.Value = Now
, sans succès.

Il doit y avoir quelque chose que je n'ai pas saisi...

Merci d'avance pour vos réponses!
A voir également:

2 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

Peut être faut-il faire les contrôles avant de fermer le UF ...

Par exemple:

Sub btnValider_Click()

Debut = DateDebut.Value
Fin = DateFin.Value
Nom = CBNom.Text

If Debut > Fin Then
MsgBox "La date de début de congé est après la date de fin
du congé!", vbOKOnly, "Attention!"
Exit Sub
End If

'....
Unload Me
End Sub
--
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0
miko96 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Non, ça ne change rien, malheureusement...
En fait (si je ne fait pas d'erreur), je ne ferme que l'interface graphique de la UF, puisque le programme tourne toujours. Et j'ouvre à nouveau l'interface graphique avec "UF_Entree.Show" avant d'y injecter les valeurs souhaitées (ou du moins d'essayer...)
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Unload décharge l'UF de la mémoire. Ne pas confondre avec Hide qui masque l'UF.

UF.Show initialise l'objet UF et les composants graphiques qui la composent par la procédure UF_Initialize(). Si tu veux faire les contrôles de saisie après avoir fermer l'UF, il faut que tu fasses un module à part pour gérer l'initialisation de l'UF selon des règles de gestion que tu auras établi et codé !!! Ça peut se justifier dans certain cas, mais je ne pense pas que ça soit vraiment utile de faire une usine à gaz alors qu'il est plus simple d'effectuer les contrôles avant de fermer l'UF !!!
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonsoir,

D'accord avec pollux. Ne ferme le formulaire que si c'est ok.
Essaie avec ça :
Sub btnValider_Click()
Debut = DateDebut.Value
Fin = DateFin.Value
Nom = CBNom.Text
If Debut > Fin Then
MsgBox "La date de début de congé est après la date de fin du congé!", vbOKOnly, "Attention!"
Exit Sub
Else
' traitement
' ...
Unload Me
End If
'....
End Sub

eric
0