DTPicker - Valider qu'une date a été saisie

Fermé
melidan06 Messages postés 17 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 27 janvier 2020 - 23 févr. 2018 à 22:48
melidan06 Messages postés 17 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 27 janvier 2020 - 7 mai 2018 à 17:46
Bonjour!

VBA EXCEL 2010
En userform
Je demande d'inscrire une date à l'aide de DTPicker. Il se nomme DTPicker2.
Par défaut, il met la date du jour mais il est grisé tant que l'utilisateur ne saisie pas une autre date ou bien coche celle déjà inscrite par défaut.
Lorsqu'Il enregistre, j'aimerais trouver le code qui valide qu'il n'a pas laissé la date grisé, ce qui veut dire, qu'il a saisi une date ou a coché celle d'Aujourd'hui pour l'activer come valeur du DTPicker.

Voici le Userform:




Au départ, à l'aide d'une boucle, j'ai écrit:

For Each Ctrl In Nouv_trans_fr.Controls
'msgbox Ctrl.Name
If Left$(Ctrl.Name, 7) = "TextBox" Then
If Ctrl.Value = "" Then
'Si textbox = nopolice, nom lcient, HH ou MM
If Ctrl.Name = "TextBox14" Or Ctrl.Name = "TextBox15" Or Ctrl.Name = "TextBox28" Or Ctrl.Name = "TextBox29"_
Or Ctrl.Name = "TextBox31" Then
Ctrl.BackColor = &HC0C0FF 'Ou RGB(255, 0, 0)
i = i + 1
End If
End If
ElseIf Left$(Ctrl.Name, 8) = "ComboBox" Then
If Ctrl.Value = "" Then
If Ctrl.Value = "" Then
Ctrl.BackColor = &HC0C0FF
i = i + 1
End If
End If
ElseIf Left$(Ctrl.Name, 7) = "DTPicker" Then
If Ctrl.Value = "" Then 'Si DTPiker = vide
msgbox "La date de naissance est obligatoire."...blablabla
i = i + 1
End If
End If

Il ne le reconnaissait pas comme vide.

Ensuite, j'ai essayé simplement:
If DTPicker2.value = "" then
msgbox "La date de naissance est obligatoire."...blablabla
End if
J'ai cru que ce code fonctionnerait mais non! Il ne le reconnait pas plus comme étant vide, même si la date grisée par défaut n'est pas cochée pour la rendre en valeur et que l'utilisateur n'a pas sélectionné une date.

C'est comme si parce qu'il y a une date par défaut, même si elle est grisée (désactivée), elle compte comme une valeur.


Je commence à me demander si c'est possible de valider ça ou non!
Si oui, quel est ce *@&?% code!!!!! LOL

Quelqu'un peut m'aider svp?

1 réponse

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié le 23 févr. 2018 à 23:12
Bonjour,

il y a bien longtemps que je n'utilise plus les contrôles de date.
Tu dois avoir une propriété Tag qui est à ta disposition. Tu pourrais y mettre une valeur sur sélection d'une date, que tu testerais ensuite.
eric

1
melidan06 Messages postés 17 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 27 janvier 2020
7 mai 2018 à 17:46
Bonjour! Désolée pour le délai, j'étais absente.
Finalement, je ne comprenais pas trop ce que voulais dire Propriété Tag, où aller valider le tout... comme mon délai pour livrer mon outil était urgent, j'ai fait vite une autre alternative.

J'ai supprimé le DTpicker de mon userform.

Ce que j'ai fait à la place:
Toujours dans le Userform: j'ai créé 3 textboxs vis-à-vis lesquels chacun a son identifiant (3 labbels): AAAA MM JJ.

Le stagiaire n'aura qu'à inscrire l'année dans le textbox vis-à-vis le AAAA, ensuite le numéro de mois vis-à-vis le MM et le jour dans le textbox du JJ.

Ensuite, je transfère le tout en cellule ex : E6 avec le code suivant:
Range("E6").value = textbox1.value & "/" & textbox2.value & "/" & textbox3.value

'Je m'assure que la valeur inscrite en E6 est bien une valeur date:
Range("E6").value = Format(date, Range("E6").value)

C'est tout! Ça fonctionne nickel!

Ériiic: Tu utilise toi de ton côté pour les entrées de date?
Aussi, si tu veux bien tout de même m'expliquer ce que tu voulais dire par "Tu dois avoir une propriété Tag qui est à ta disposition. Tu pourrais y mettre une valeur sur sélection d'une date, que tu testerais ensuite. " et me dire où je dois regarder pour trouver la propriété Tag", ça m'aiderais pour la prochaine fois.

Merci de ton retour rapide et désolée de mon retour tardif.
0