Re : Recherche valeur Dpicker
bonsoir Yann,
effectivement c'est curieux, mais je pense avoir trouvé la raison du problème.
Lorsque que tu initialises ton formulaire, tu utilises l'instruction
DTPicker1.Value = Now.
Or Now représente la date et l'heure. Sur le calendrier, c'est transparent. mais quand tu choisis une date, la valeur du DTPicker1 n'est pas la date simple du jour , mais la date choisie avec l'heure d'initialisation du formulaire (si tu initialises le formulaire le 10 septembre à 12h, la valeur de DTPicker1 sera 41892,5 et pas simplement 41892).
La valeur du DTPicker est donc un nombre décimal (la partie décimale est inférieure à 0,5 avant midi et supérieure à 0,5 après-midi).
Dans ton fichier, les dates enregistrées sont représentées par des nombres entiers (exemple : 41659 pour le 15/01/2014 - il s'agit des dates à 0h00).
Lorsqu'on fait la recherche avec l'instruction find, il faut donc rechercher un nombre entier (sinon on ne trouve pas de correspondance). C'est la raison pour laquelle j'avais transformé ton instruction
datuser = DTPicker1.Value en
datuser = CLng(DTPicker1.Value). Seulement je n'ai pas choisi la bonne fonction.
En effet si on regarde l'aide de VBA,
Les fonctions CInt et CLng arrondissent les parties décimales égales à 0,5 au nombre pair le plus proche. Par exemple, 0,5 est arrondi à 0 et 1,5 est arrondi à 2.
Il convient donc d'utiliser plutôt la fonction
Int qui elle tronque simplement la donnée décimale sans faire d'arrondi.
Le mieux est d'ailleurs de faire cela lors de l'initialisation du formulaire en mettant l'instruction
DTPicker1.Value = Int(Now) àl a place de
DTPicker1.Value = Now.
De ce fait dans la
SUB DTPicker1_CloseUp() on peut remettre l'instruction initiale
datuser = DTPicker1.Value.
C'est ce que j'ai fait dans la version jointe.
Essaie à nouveau et dis-moi si ça fonctionne.
Bonne nuit