Bjr,
Dans ce code que représente le 3 de DATE et à quoi sert Text ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part lundisem = Evaluate("text(date(2008,1,3)-weekday(date(2008,1,3))-5+(7*17)+ 0,""dd/mm/yyyy"")")
Bjr,
Dans ce code que représente le 3 de DATE et à quoi sert Text ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part lundisem = Evaluate("text(date(2008,1,3)-weekday(date(2008,1,3))-5+(7*17)+ 0,""dd/mm/yyyy"")")
bonjour
la fonction "Texte" sert à convertir une valeur en texte et par la même occasion ici, de mettre en forme le résultat: "dd/mm/yyyy"
bon après midi
michel
bjr,
Ok pour la transfo en texte mais ici pourquoi on transforme en texte ?
et pouquoi date part du 3 1 2008 si le 3 représente bien le jour ?
Cdt
bonjour
tu as lu mon message ?mais ici pourquoi on transforme en texte ?
par la même occasion ici, de mettre en forme le résultat: "dd/mm/yyyy"
sans la fonction Texte, tu obtiendrais uniquement une valeur numérique représentant la date : 39559
bon week end
michel
Petite précision.
Ce que tu nous montres est une formule Excel, pas du code VBA.
Tu pourrais parfaitement analyser cette formule en tapant chacun des mots clés (après un =) dans la barre de formule et en cliquant sur le bouton fx (juste devant la barre de formule).
Tu obtiendrais toute l'info nécessaire.
Ceci dit, il est franchement tordu de faire un Evaluate en VBA alors que toutes les fonctions Excel utilisées ont leur équivalent en VBA.
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Bjr Alain
C'est pourtant ce que j'ai récupéré qui disait "comment trouver par macro la date du lundi d'une semaine donnée le code est:
Existe-t-il mieux en code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub Test() Dim Annee As Integer, Semaine As Integer, NumJour As Integer Annee = 2007 Semaine = 43 NumJour = 0 ' 0=Lundi, 1=Mardi ... MsgBox Evaluate("TEXT(DATE(" & Annee & ",1,3)-WEEKDAY(DATE(" & Annee & _ ",1,3))-5+(7*" & Semaine & ")+" & NumJour & ",""dd/mm/yyyy"")") End Sub
Cdt
La fonction pour une date:
Son appel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Function DayBeforeDate(dDate As Date, Optional iDay As Integer = vbMonday) As Date DayBeforeDate = IIf((dDate - (Weekday(dDate) - iDay)) < dDate, _ dDate - (Weekday(dDate) - iDay), _ (dDate - (Weekday(dDate) - iDay)) - 7) End Function
Dès que j'ai 5 minutes je cherche pour une semaine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub test() MsgBox DayBeforeDate(CDate("26/04/2008"), vbTuesday) End Sub
A moins que quelqu'un me précède.
Edit: Fonction plus générale permettant de choisir le jour.
Au passage pour bien te former, les cours et tutoriels pour apprendre Excel : https://excel.developpez.com/cours/
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Bonjour
Le code que j'utilise pour déterminer le lundi d'une semaine donnée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sub lundi_semaine() Dim sem As Integer, lundi As Date sem = InputBox("entrez le numéro de semaine") lundi = IIf(Weekday(DateSerial(Year(Date), 1, 1)) > 5, _ DateSerial(Year(Date), 1, 1) - Weekday(DateSerial(Year(Date), 1, 1)) + 2, _ DateSerial(Year(Date), 1, 1) - Weekday(DateSerial(Year(Date), 1, 1)) - 5) + 7 * sem MsgBox lundi End Sub
Bonjour,
Moi, je verrais bien les choses ainsi (en respect, je crois, des conventions ... qui font que la première semaine d'une année peut commencer l'année d'avant) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Command5_Click() annee = "2007" semaine = 2 MsgBox DateAdd("ww", semaine, DateSerial(annee, 1, 1 - (WeekDay(DateSerial(annee, 1, 1)) - 1))) End Sub
Bonjour,
Ucfoutu : j'ai essayé avec 2006, 2007, 2008 mais la date renvoyée ne semble pas correspondre au lundi de la 2ème semaine selon la norme ?
Il suffit d'adapter ma formule à la convention adoptée...
Celle-là, par exemple :
http://fr.wikipedia.org/wiki/Semaine_1
Bonsoir,
Oui je connais (et je connaissais sans doute avant que Wikipedia existe) :
Le problème : je ne sais pas adapter la formule.La semaine 1 est, d'après la norme ISO 8601, la première semaine de l'année contenant un jeudi.
Décomposes et tu adapteras plus facilement, alors :
voilà pour ta norme ISO (en te rappelant qu''existent d'autres conventions)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Command5_Click() annee = "2008" semaine = 2 toto = IIf(WeekDay(DateSerial(annee, 1, 1)) > 5, -1, -5) ' 5, c'est pour ta norme ISO. MsgBox DateAdd("ww", semaine, DateSerial(annee, 1, 1 - (WeekDay(DateSerial(annee, 1, 1)) - toto))) End Sub
Bjr,
J'ai vu vos code, moi j'avais adapté comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 annee=Format(Date,"yyyy") datdeb=Format(annee &",1,3","#####" joursem=Weekday(datdeb) numsem=DatePart("ww",Date) lundi=Format((datdeb-joursem) -5+(7*numsem),"dd/mm/yyyy")
Mais c'est maintenant autre chose !
Tu cherches le lundi de la semaine dans laquelle se trouve la date en cours ?
Si c'est celà, rien de plus simple !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Command1_Click() MsgBox Date - WeekDay(Date) + 2 End Sub
Comme quoi, mon premier code, même s'il vient d'une lecture incomplète de la question, répondait bien au problème:
Connaître le lundi précédent une date donnée.
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Bjr,
Non je cherche bien le lundi d'une semaine par rapport au n° de cette semaine.
Cdt
Bien sur c'est bien ce que je fais: le format date n'est la que pour recuperer l'annee et datdeb= format(annee & ",1,3","#####") c'est pareil que dateserial(annee,1,1) non ?
Je me base juste sur cette ligne:
où tu récupères le numéro de semaine de la date du jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part numsem=DatePart("ww",Date)
C'est, un peu, le 22 à Asnières...
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager