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

Fermé
miko96 Messages postés 10 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013 - 30 oct. 2013 à 09:03
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 31 oct. 2013 à 15:12
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 oct. 2013 à 16:49
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 vendredi 9 novembre 2012 Statut Membre Dernière intervention 30 octobre 2013
30 oct. 2013 à 17:02
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 oct. 2013 à 15:12
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 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
30 oct. 2013 à 19:30
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