Recherche valeur Dpicker

yann17

XLDnaute Nouveau
Bonjour à tous,

je suis un vrai débutant en vba et je rencontre un problème sur lequel je m'arrache les cheveux depuis plusieurs jours.

J'ai un userform avec un DTpicker pour sélectionner une date, et quelques textbox et combobox pour rentrer des données. Un bouton "valider" qui copie ces données (date en colonne A, textbox en B, C, etc) sur la première ligne qui est vide.
Je souhaiterais lors de la sélection de la date, faire une recherche de cette date en colonne A. Si elle existe déjà, je voudrais retrouver les valeurs de la ligne, dans les textbox du formulaire. Puis avec un bouton "modifier", remplacer les valeurs existantes (au lieu de créer une nouvelle ligne, pour ne pas avoir de doublon de date).

J'espère avoir été assez clair dans mes explications, et merci d'avance à ceux qui pourront faire avancer mon schmilblick :)
 

Pièces jointes

  • monfichier.xlsm
    100 KB · Affichages: 51
  • monfichier.xlsm
    100 KB · Affichages: 63
  • monfichier.xlsm
    100 KB · Affichages: 63
Dernière édition:

Jacou

XLDnaute Impliqué
Re : Recherche valeur Dpicker

Bonsoir Yann, bonsoir le forum,
une piste pour commencer, voir la procédure DTPicker1_CloseUp dans le fichier joint

Bonne nuit
 

Pièces jointes

  • monfichier.xlsm
    94.3 KB · Affichages: 61
  • monfichier.xlsm
    94.3 KB · Affichages: 66
  • monfichier.xlsm
    94.3 KB · Affichages: 56

yann17

XLDnaute Nouveau
Re : Recherche valeur Dpicker

Bonjour Jacou,

merci beaucoup de prendre le temps de m'aider. J'ai donc regarder ton code, j'avoue qu'au départ j'y comprenais pas grand chose puis après qques recherches j'ai fini par comprendre.
Par contre je rencontre 2 problèmes et je ne vois pas d'où cela vient.
D'abord lorsque je sélectionne une date existante dans le DTpicker, c'est bien la date choisie qui s'affiche, en revanche la cellule sélectionnée est à J+1 et donc les infos de cette ligne sont copiées.
Ensuite si je sélectionne une date qui n'existe pas, cela provoque une erreur. J'ai donc essayer de rajouter "Exit Sub" après "If Selection Is Nothing Then", mais l'erreur se situe juste au dessus dans la recherche.

Si tu as une idée...
Et merci encore pour ton aide.
 

Jacou

XLDnaute Impliqué
Re : Recherche valeur Dpicker

Bonsoir Yann,
Essaie cet version; j'ai essayé de traiter l'erreur; ça devrait te permettre de continuer.
L'instruction "xx = Err.Number" n'est pas utile; elle ne sert qu'à voir quel est l'erreur générée selon les cas lors d'un débogage
en revanche la cellule sélectionnée est à J+1 et donc les infos de cette ligne sont copiées.
Je n'ai pas bien compris ce qui t'arrive.
Chez moi si je sélectionne le 08/01/2014, c'est bien la cellule A11 qui est sélectionnée et les renseignements de la ligne 11 s'affiche dans le userform.

bonne nuit
 

Pièces jointes

  • monfichier.xlsm
    101.8 KB · Affichages: 45
  • monfichier.xlsm
    101.8 KB · Affichages: 53
  • monfichier.xlsm
    101.8 KB · Affichages: 59
Dernière édition:

yann17

XLDnaute Nouveau
Re : Recherche valeur Dpicker

Bonsoir Jacou,

Effectivement plus d'erreur lorsque je sélectionne une date qui n'existe pas :D, ça c'est la bonne nouvelle.
En revanche je ne comprends pas pour la date, que ça ne fonctionne pas chez moi :confused:. Pour moi la cellule trouvée est toujours à J+1, alors que le DTpicker indique le jour J.

Merci.
 

yann17

XLDnaute Nouveau
Re : Recherche valeur Dpicker

Bonsoir,

je fais suite au problème que je rencontre sur la sélection de la date. Ce matin j'ouvre le fichier et là magie ça fonctionne, génial. Ce soir je rentre du boulot, je me dis que je vais bosser un peu sur le fichier, et là ça ne fonctionne plus...:confused: Pendant 5 bonnes minutes je me dis que je suis dingue, et là me vient une idée : je modifie l'heure sous windows que je règle avant midi et là miracle ça fonctionne. Je repasse après midi et ça passe plus.
AU SECOURS !!! Je n'y comprends plus rien.

Si quelqu'un a une idée la dessus je suis preneur.

Merci d'avance
 

Jacou

XLDnaute Impliqué
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
 

Pièces jointes

  • monfichier V2.xlsm
    101.8 KB · Affichages: 40
Dernière édition:

yann17

XLDnaute Nouveau
Re : Recherche valeur Dpicker

Bonjour Jacou,

ça a l'air de fonctionner niquel. Pour le bouton modifier j'ai ma ptite idée avec le code que tu m'as donné, donc maintenant c'est à moi de me mettre au boulot.
Un grand merci pour ton aide, et peut-être à bientôt ;)
 

Discussions similaires

Réponses
11
Affichages
254

Statistiques des forums

Discussions
312 590
Messages
2 090 040
Membres
104 354
dernier inscrit
Chass