|
|||
Calculs sur dates, WE et jours fériés en VBAIl est facile dans Excel ou Access de faire la différence entre deux dates pour savoir le nombre de jours qui les sépare. C’est souvent utile dans nos métiers de la logistique : date prévue de livraison en fonction de la date de commande et du délai (10 jours par exemple), calcul du nombre de jours de retard,… Mais la semaine comprend les week-ends et vous ne voulez pas forcément en tenir compte dans vos calculs. Week-endsPour ne pas tenir compte des week-ends, vous pouvez par exemple intégrer cette fonction en VBA dans Microsoft Excel (appuyez sur Alt-F11 pour accéder à l’éditeur VBA) : ![]() fonction ecartjour excel Dans votre tableau Excel, vous vous en servez en tapant dans une cellule : = ecartjour (cellule1 ; cellule2) Etant entendu que chacune des cellules contient une date. Vous modifierez les calculs effectués par la fonction selon que vous voulez tenir compte des jours inclus ou exclus. Jours fériésPour exclure les jours fériés, il va bien falloir les indiquer quelque part pour que le programme les connaisse ! Je ne vais pas faire la démonstration pour Excel mais pour Access. On pourrait le faire sous Excel mais cela implique de faire référence par exemple à un autre classeur qui serait l’équivalent de la table ci-dessous. Dans Access, j’ai créé une table CALENDAR_feries qui contient deux colonnes :
![]() table_jours_feries_access Ensuite le code de la fonction qu’il faudra appeler à chaque fois que nécessaire : ![]() jours_feries_access Ce petit code devrait vous mettre sur la bonne voie, à vous de l’adapter. Si vous avez des remarques, des questions, ou si vous avez besoin d’aide, utilisez les commentaires ci-dessous. Auteur : Laurent - 13 mai 2009 (vous pouvez consulter son CV)2 commentaires pour Calculs sur dates, WE et jours fériés en VBA |
|||
|
Copyright © 2009-2010 Logi-cité - Mentions légales - Plan du site |
|||
Bonjour,
petite remarque sur le premier test
if date1 >= date2
il faut enlever le signe = car si les deux dates sont égales, on part dans une boucle infinie
car for i = date1 + 1 to date2 donnera immédiatement date1 supérieur à date2
Bonjour et merci pour votre contribution !
Je ne fais pas la même analyse que vous car dans votre exemple, la boucle ne sera finalement pas effectuée.
Après un essai avec deux dates identiques, le code me semble fonctionner et donner le bon résultat.
A essayer de votre côté.