Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Calendrier, décalage de date + effacer l'heure...

Raf88

XLDnaute Nouveau
Bonjour à tous,

J'ai monté dans un cadre professionnel une base de donnée me permettant de suivre mon activité en terme de charge de travail à la date.

Pour se faire, je demande à mes chefs d'équipe de remplir un formulaire que j'ai créer. Mon premier problème à résoudre à été la date.... certains saisissaient 19 juillet... d'autres 19/07 dautres encore 19.7... bref, 50 format de dates ingérables !!!

J'ai choisis (grace à votre aide) d'utiliser un calendrier (DTPicker).

Tout fonctionnait à peu près bien... sauf un point... le calendrier m'ajoute à la date, l'heure de saisie... impossible de l'enlever... j'ai dans un premier temps utiliser la colonne voisine avec la formule suivante : ( = arrondi(gauche(cellule;8);1) ) Ca fonctionnait pas trop mal... mais pas convainquant... j'aimerai une autre solution si vous aviez ;-)

Mon second problème, c'est que depuis hier... mon programme me saisi à la date demandé dans le DTPicker... la date +3jours....

Je n'ai pas réussi à vous joindre mon fichier, trop loursd même compressé... voilà parcontre le code qui me pose problème....
Si certains d'entre vous ont un peu de temps pour m'améliorer cela... ce serait super sympa... car là je galère ! (En plus de l'amélioration, les explications seront les biensvenues... j'aimerai aussi progresser ;-) )

 

Raf88

XLDnaute Nouveau
Re : Calendrier, décalage de date + effacer l'heure...

Mon problème est sur ces lignes :

Range("d6").Value = CDate(DTPicker3)
Range("e6").Value = CDate(DTPicker4)

Ca fonctionne, mais j'ai l'heure qui apparait, et je n'en veux pas....

Je les ai modifié ainsi :

Range("d6").Value = Format (DTPicker3.value, "dd/mm/yy")
Range("e6").Value = Format (DTPicker4.value, "dd/mm/yy")

Alors là c'est la cata !!!
1/ D6 m'apparait sans la date... il s'agit de la date du jour que j'ai fixée dans mes paramètres de calendrier... donc pas de soucis, j'obtient le resultat attendu....
2/ E6 se transforme en la date saisie -6mois ou plus troisjour selon les cas... et j'ai 00:00:00 à la fin... je n'y comprends pas grand chose, puisque j'ai respecter la même formule pour les deux...

Encore une fois mon fichier est trop lours pour que je puisse vous l'envoyer....
 

Gorfael

XLDnaute Barbatruc
Re : Calendrier, décalage de date + effacer l'heure...

Salut Raf88 et le forum
Bienvenue
Utilises les balises de code (# en mode avancé), ton poste n'en sera que plus lisible
puisque j'ai respecter la même formule pour les deux...
C'est pas DTPicker qui te donne la bonne date, c'est sa conversion en date
Code:
Range("d6").Value = Format (CDate(DTPicker3), "dd/mm/yy")
Range("e6").Value = Format (CDate(DTPicker4), "dd/mm/yy")
3 kilomètres de scroll pour passer d'un poste à l'autre, alors qu'avec les balises...
A+
Edit : jeté un œil sur ta macro, et le code serait plutôt du genre :
Code:
Range("d6") = CDate(DTPicker3)
Range("e6") = CDate(DTPicker4)
[D6:E6].FormatNumber = "dd/mm/yy"
Pas envie de me creuser la tête pour un code farci de Select/activecel, qui utilise plein d'envois en sous-programmes.
alors juste une pour montrer qu'on peut simplifier :
Code:
Sub pical()
Sheets("calcul").Select
Rows("28:28").ClearContents
Range("B28") = prepanum
Range("B28").Select
End Sub
code qui donne la première cellule vide
Code:
Range("d3").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
Moi je préfère Cells(Rows.count,"D").end(xlup) (ou Cells(3,"D").end(xldown) pour rester dans la demande initiale)
Code:
' copier/coller la date d'affrètement :
Worksheets("calcul").Select
Range("o5").Select
Range("o5").Copy
Sheets("BDD").Select
Range("n3").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
ActiveCell.Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
donne alors :
Code:
' copier/coller la date d'affrètement :
Worksheets("calcul").Range("o5").Copy
Sheets("BDD").Cells(Rows.Count, "N").End(xlUp).PasteSpecial Paste:=xlPasteValues
Pour le même résultat : copier O5 de la feuille "calcul" dans la première cellule vide derrière la dernière non vide de N de la feuille BDD

Petite remarque, pour une personne n'utilisant pas ton fichier :
BDD semble suggérer une base de donnée => l'important étant qu'un enregistrement est dispatché sur une ligne unique, suivant les colonnes. Or, tu recalcules la ligne à chaque inscription dans une colonne => si tu as une (ou plusieurs) vide, bonjour les résultats...

Re-Edit : petit rappel : on n'en a rien à faire des fichiers de travail. Pour apprendre à l'utiliser, il faut trop de temps, qu'on n'a pas envie de lui consacrer ! D'où une limite de taille qui suffit largement pour un fichier d'essai : une ou deux feuilles, une dizaine de lignes et uniquement le problème à résoudre !
Le but n'est pas qu'on résolve ton problème, mais qu'on t'explique comment tu peux le résoudre, en te fournissant les codes, formules et explications pour te le permettre !
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
591
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…