|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() maxime Développeur informatique Inscription : mai 2011 Messages : 8 ![]() |
Bonjour à toutes et à tous !
Voilà je suis en stage actuellement et dois développer une base de données exclusivement sous Access. Mais je suis bloqué depuis quelques jours. J'ai recherché partout sur le net, j'ai bien trouvé quelques réponse, mais rien qui ressemble à ce que je dois faire. Je dois Calculer à l'aide du VBA une date prévisionnel pour des controles redondants. Chaque contrôle a un cycle différent, et je dois calculé la date du prochain contrôle. en prenant en compte, les jour/semaine/mois/trimestre/semestre/ans et le nombre de jour/semaine,etc... cela se présente comme ça: Last Done: 23/05/2011 (la date dont je dispose) Every [ 1 ] [ Week ] (le cycle) Next Due: 30/05/2011 (date à calculer) Je n'ais aucune idée de comment m'y prendre, je ne connais que très peu le VBA. Je vous serais très reocnnaissant de m'aidé à me sortir de cette impasse Merci à vous Tiberium76 |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour
Tu devrais regarder du coté de la fonction VBA DateAdd, ce tuto te donnera toutes les astuces pour manipuler les dates. Cette partie là te concernera plus : http://mhubiche.developpez.com/vba/f...tetime/#LIII-D Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon ![]() Si vous pensez commencer sans un livre, oublier : livres pour débuter Vous pouvez consulter mes articles sur Access et PowerPoint Le blog Office. Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas. |
|
|
00
|
|
|
#3 | ||
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bonjour,
J'ai eu un cas similaire, à partir d'une date et d'une fréquence calculer la prochaine date de computation. Voici la méthode que j'utilise : Je met ceci dans une requête : Code :
Et pour la fréquence, c'est si tu as un champs avec plusieurs fréquences définient.(du genre weekly, daily, monthly,...) Alors ensuite soit tu fais plusieurs requêtes comme celle là pour tous les cas de figure que tu peux avoir et tu met du code VBa pour les lancer du genre : Code :
CurrentDb.Execute "QUERYNAME", dbFailOnError Soit si tu as vraiment des cycles embêtant du genre tous les 2 jours, tu dois mettre directement ta requête dans ton code VBA et utiliser des variables pour récupérer et le nombre ( [ 1 ] dans ton exemple) et la fréquence ( [ Week ] dans ton exemple). Après si tu as des problèmes pour ça, tu peux toujours demander ^^.
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
||
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() maxime Développeur informatique Inscription : mai 2011 Messages : 8 ![]() |
Merci beaucoup !! Je ne connaissais pas cette fonction. j'ai essayé de la mettre en oeuvre avec une requète mais je ne vois pas comment m'y prendre. Je ne vois pas où mettre le code.
J'ai donc si j'ai bien compris: NextDue = DateAdd ( TimeProfile, Frequency, LastDone) Ma table contient pour chaque controles, l'intervalle (yyyy,ww,d,etc...) , la fréquence en nombre, et la date de reférence. Il n'y a que le champ NextDue à calculer. On ne peut pas faire quelque chose comme dans Excel, où l'on met la fonction, ses paramètre (ici les autres champ) et le petit = pour que tout roule ? Comment puis-je mettre à jour toutes les NextDue de tout les enregistrement de ma table ? je ne vois pas du tout. c'est complétement flou Si ce n'est pas possible, au moins les afficher dans une Text Box. Ce n'est pas très grave qu'ils soient dans la table, mais c'est mieux. Voici le Code VBA que j'ai essayé mais ça ne fonctionne pas Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bon alors dans ton cas je ferais comme cela :
Code :
Si tu n'as jamais fait de VBA, tu mets ce code dans un module dans visual basic de access. Ensuite pour le lancer, soit tu fais simplement play, soit tu te crée une macro de lancement de ce code.(ou un formulaire) Dernier petit détail, ne pas oublier de référencer ta bibliothèque avec dans Visual Basic : Outils > référence > Microsoft ActiveX Data Objects *.* library. Bonne soirée.
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
||
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Ah oui au fait!
Pour créer une requête de ce type(Type UPDATE) , tu vas dans le gestionnaire de requête, tu ne sélectionne aucune table et tu vas dans le SQL view et tu colles ton Update machin dedans. Dans ton cas, comme tu as beaucoup de choix différents pour chacune de tes dates, tu devrais créer une requête pour chaque cas, du genre : tous les 7 jours, tous les 2 jours, tous les trimestres, tous les mois,... Voila j'espère avoir été assez clair, si tu as d'autres questions n'hésites pas. Cordialement, Quentin.
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() maxime Développeur informatique Inscription : mai 2011 Messages : 8 ![]() |
Merci beaucoup pour ton aide. ça fonctionne ! je n'ais même pas eu besoin de créer un module j'ai juste créé une requête comme tu m'as dis:
Code :
UPDATE t_Controls SET NexTDueDate = DateAdd(TIMEPROFILE,FREQUENCY,LASTDONE); Code :
CurrentDb.Execute "q_NextDueDate", dbFailOnError Résultat, tous mes enregistrement sont mis à jour avec la date calculée. Par contre j'ai une dernière petite question. Comment peut-on faire pour executer un Refresh All , après une selection faite dans une Combo Box ? j'ai essayé: mais sans succes, ça ne rafraichie pas tout. Merci à vous !
|
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Cool, tu viens de m'apprendre que l'on pouvait mettre des noms de champs à la place de 'd', 'mm',...
Par contre, ne sachant pas ce qu'est une combo-box(ou zone de liste?...), je ne peux pas t'aider là-dessus, désolé. Je t'aide dans la limite très limitée de mes connaissances ^^. En tout cas, bonne continuation !
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() maxime Développeur informatique Inscription : mai 2011 Messages : 8 ![]() |
Jolie échange de connaissance en somme
Combo-Box est le nom anglais pour designer une liste déroulante. je viens de voir que l'on pouvait aussi utilisé .Requery mais je ne vois pas où mettre cette commande. peut-être directement dans le formulaire... je vais essayé... un truc du style Me.Requery Bonne continuation à toi aussi !!
|
|
|
00
|
|
|
#10 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Au fait, tu peux mettre la discussion en résolue (en bas de page quand tu es connecté).
Et si tu as d'autres questions différentes que celle du titre, mets les plutôt en nouvelle discussion, tu auras plus de chance d'avoir des réponses. ![]() A+
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com