|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() arnaud roux Inscription : janvier 2010 Messages : 6 ![]() |
Bonjour,
Je suis confronté à un petit problème, je cherche l'équivalent de la fonction FIN.MOIS d'excel pour access. Exemple : j'ai une date 23/06/10 et je voudrais automatiser la mise à jour de la date d'un test pour qu'elle devienne 31/12/10. C'est à dire le dernier jour du mois de la dite date + 6 mois. Merci et joyeuses fêtes |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Bonsoir,
on s'écrit une 'tite fonction VBA : Code :
Dans la fenêtre d’exécution (Ctrl+G) : Bonnes fêtes de fin d’année… |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() arnaud roux Inscription : janvier 2010 Messages : 6 ![]() |
Bonjour,
Merci pour la réponse. N'étant pas familier avec le VBA, peux-tu m'expliquer comment faire pour l'utiliser. J'ai deux champs : (ValCHL) et (DerCHL) ce que je veux c'est avoir une mise à jour de (ValCHL) en fonction de (DerCHL) Je m'explique: - si (DerCHL) est dans les 3 mois précédents (ValCHL) la nouvelle date de (ValCHL) est l'ancienne + 6 mois, sachant qu'à la base (ValCHL) est toujours une date en fin de mois. - si (DerCHL) est fait après (ValCHL) ou plus de 3 mois avant (ValCHL), la nouvelle date (ValCHL) sera (DerCHL) + 6 mois, mais au dernier jour du mois. ex n°1 ex n°2 De plus pouvez-vous m'expliquer comment concrètement mettre cela en pratique dans ma base de données, car je n'ai jamais utilisé de fonctions VBA. Merci beaucoup. |
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Bonjour arouxy,
dans Access, tu ouvres l’éditeur VBA (ALT+F11) puis après Insertion>Module s’ouvre la fenêtre d’édition. Il ne reste plus qu’à copier/coller le code précédent de la fonction publique qui peut maintenant être appelée de n’importe où. Pour tester la fonction, tu affiches la fenêtre d’exécution (Affichage>Fenêtre Exécution ou CTRL+G). Dans la fenêtre d’exécution, tu tapes la commande: (date au format US, mm/dd/yyyy, à mettre entre #). Tu valides, la fonction retourne : 2ème essai : Code :
Citation:
Non ? Ensuite il nous manque des informations pour savoir où placer l’appel de la fonction et quand exécuter l’appel. S’agit-il d’une mise à jour globale de tous les enregistrements d’une table (requête "Mise à jour") ? S’agit-il d’une mise à jour de l’enregistrement en cours dans un formulaire unique liée à une table ? Dans ce cas, quand doit-on effectuer la mise à jour ? Sur clic d’un bouton ? Après la saisie/modification de DerCHL ? Autre chose ? |
|||
|
00
|
|
|
#5 |
|
Invité de passage
![]() arnaud roux Inscription : janvier 2010 Messages : 6 ![]() |
Merci pour ta rapidité,
La mise à jour est faite uniquement pour l'enregistrement en cours. Je pensais l'exécuter sur "modification" de (DerCHL). Dans le code que tu as écrit, il faut remplacer quoi par le bon nom de champ? Merci |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
A minima, on peut envisager la mise jour sur l’évènement "après MAJ" du contrôle [DerCHL] :
Code :
Dans la "feuille de propriétés", dans l’onglet "évènement" sur la ligne "après MAJ", tu cliques sur le bouton […] et tu choisis "générateur de code". L’éditeur VBA s’ouvre et tu complètes le code entre Private… et …End Sub. Après, il semblerait que la mise à jour du champ ne doit être effectuée qu’à certaines conditions (encore obscures pour moi avec ces + ou - 3 mois) et il faudra peut-être compléter le code précédent.Bref, tu testes le code et tu reviens si le comportement n’est pas tout à fait celui souhaité pour qu’on puisse l’améliorer. |
||
|
00
|
|
|
#7 |
|
Invité de passage
![]() arnaud roux Inscription : janvier 2010 Messages : 6 ![]() |
Bonsoir,
Encore merci. Je viens d'essayer tes codes. Pas de problème le coup des 6 mois fonctionne parfaitement. Cette mise à jour de date sert pour un suivi de qualification je m'explique : Ma qualification est valable jusqu'à (ValCHL). Cette qualification est valable 6 mois, mais peut être renouveler 3 mois max avant tout en gardant comme point de départ (ValCHL) pour le calcul de la nouvelle date 6 mois après (ValCHL). Mais si je renouvelle ma qualification plus de 3 mois avant (ValCHL), ou si j'ai dépassé la date de (ValCHL), la nouvelle date de (ValCHL) sera celle de (DerCHL)+6 mois mais au dernier jour du mois. ex: (ValCHL)=31/12/10 et (DerCHL)=03/01/11 donc nouvelle (ValCHL) sera 31/07/11 ou bien (ValCHL)=31/12/10 et (DerCHL)=03/09/10 donc nouvelle (ValCHL) sera 31/03/11 J'espère t'avoir expliqué ca suffisamment clairement. Je te remercie. Cordialement. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com