Bonjour,
Savez vous comment faire en vba la chose suivante :
Avec un numero de semaine et une année donnée trouver le jour.
Ex : semaine : 32 année : 2009 alors jour : 03/08/09
(j'aimerai que le jour de la semaine trouvée soit un lundi)
Bonjour,
Savez vous comment faire en vba la chose suivante :
Avec un numero de semaine et une année donnée trouver le jour.
Ex : semaine : 32 année : 2009 alors jour : 03/08/09
(j'aimerai que le jour de la semaine trouvée soit un lundi)
Slt,
sous excel il y a la fonction JOURSEM qui te donne le jour correspondant à une date par exemple si ta date est dans la cellule B4 et que la semaine commence un Lundi la formule que tu insere dans la cellule ou tu veux afficher le jour est:
Maintenant pour avoir le code VBA de cette formule tu peux utiliser l'enregistreur de macro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 =JOURSEM (B4;2)
Tu met en route l'enregistreur il va te demander le nom que tu veux donner à la macro tu valides et ensuite tu sélectionnes la cellule ou veux entrer ta formule, puis dans la barre de formule tu entres ta formules tu valides et arrête l'enregistreur et tu vas voir le code.
EDIT: J'ai oublié, la formule te rendra 1 pour Lundi ,2 pour Mardi etc... voir ensuite pour transformer Le 1 en Lundi via VBA ...
voila un début de piste A+
Weekday(date, [firstdayofweek])Maintenant pour avoir le code VBA...
Attention : La première semaine de l'année est le plus souvent en bascule sur deux années.
La première semaine de l'année sera celle qui contient au moins 4 jours de cette semaine dans l'année concernée.
Le calendrier français dans Excel prend le dimanche comme premier jour de semaine.
Si tu changes le premier jour de la semaine, la numérotation des semaines dépendra donc de la date du début de la première semaine de l'année
Bon courage
Une proposition certes tordues et non vérifiée aux conditions limites
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Function Lund(ByVal sem As Integer, ByVal an As Integer) Dim d As Date d = CDate("01/01/" & an) d = DateAdd("ww", sem, d) Lund = Format(DateAdd("d", 1 - Weekday(d, 2), d), "dd/mm/yyyy") End Function
Bonjour,
1) une discussion très récente :
http://www.developpez.net/forums/d81...-numjour-date/
avec, en prime, un lien (tout premier message)
2) lorsque l'on connait le 1er jour de la 1ère semaine d'une année, un simple calcul arithmétique (ajouter n-1 fois 7 jours pour la semaine n° n, par application de la fonction DateAdd) est ... un véritable jeu d'enfant.
A toi de jouer, ami ...
aslut,
je vous rappelle que laest toute dédiée à ces problématiques :
http://access.developpez.com/faq/?pa...DAtPremJourSem
Pensez-y![]()
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Merci Mercatog pour ta réponse.
J'ai une date proche du jour souhaité mais pas exacte.Celà dois être du au fait qu'il ne prend pas en compte la différence entre les mois à 31 ou 30 jours.
Je vais regarder ça pour l'affiner.
Cdlt
Non
en fait, je ne connaissais pas la norme ISO décrite par les autres intervenants
regarde ici que t'a proposé jpechek http://access.developpez.com/faq/?pa...DAtPremJourSem
ça part du même principe avec en plus un contrôle sur la première semaine de janvier de l'année
tu comprendras mieux comme ce que j'ai compris
Partager