Recupérer la date ou la semaine en cours via Macro

Bonjour,

Est ce qu'il est possible via une macro VBA de récupérer la date de Windows pour l'insérer dans une cellule ? ou encore plus intéressant /pour la macro que jessaie de faire/ de récupérer le numéro de semaine (ex semaine 14 pour la semaine actuelle ) ?

Merci d'avance,

Bonjour,

Oui avec ce code --> Range("A1") = Date

Amicalement

Dan

PS : N'oublie pas de mettre RESOLU si ton pb est terminé. Explications ici -> https://forum.excel-pratique.com/viewtopic.php?t=13

Bonjour

Pour la date : Macro dans ThisWorkbook

Private Sub Workbook_Open()

With Sheets("Feuil1")
    .Activate
    .Range("A1") = Date 

 End With
End Sub

Je cherche pour le numéro de semaine

Amicalement

Nad

Bonjour

Voici une fonction qui donne la semaine

Function NOSEM(d As Date, Optional an, Optional tiret) 'As Long

If IsMissing(tiret) Then tiret = ""

Application.Volatile

d = Int(d)

NOAN = Year(d + (8 - Weekday(d, vbSunday)) Mod 7 - 3)

NOSEM = DateSerial(Year(d + (8 - Weekday(d, vbSunday)) Mod 7 - 3), 1, 1)

NOSEM = ((d - NOSEM - 3 + (Weekday(NOSEM, vbSunday) + 1) Mod 7)) \ 7 + 1

NOSEM = Format(NOSEM, "00")

If IsMissing(an) = False Then

NOSEM = Mid(CStr(NOAN), 3) & tiret & NOSEM

End If

End Function

dans ta cellule tu mets =nosem(aujourdhui())

en option tu peux ajouter l'année

=nosem(aujourdhui();an;"_") qui donnera 09_01 semaine 1 de l'année 2009

Re

On peut aussi ajouter une formule dans la feuille.

En A1, la date est mise par macro

En B1 :

=ENT(MOD(ENT((A1-2)/7)+0.6;52+5/28))+1

Amicalement

Nad

Bonjour,

2 autres moyens :

La date en A1

MsgBox DatePart("ww", [A1], 2, 2)
MsgBox [weeknum(A1,2)]Sub

ou pour la date d'aujourd'hui :

MsgBox DatePart("ww", Date, 2, 2)
MsgBox [weeknum(today(),2)]

Pour la 2ème, il faut que les macros complémentaires "Utilitaire d'analyse - VBA" et "Utilitaire d'Analyse" soienit installées

26reservation-v3.xlsm (129.00 Ko)

Re

Oui c'est fonction marche mais donne de mauvais résultat (ils sont au format US)

La première semaine d'une année est celle que contient le premier jeudi

Re-,

pourtant, j'obtiens 14, pour aujourd'hui, tout comme ta fonction personnalisée....

Regarde les arguments, dans chacune des fonctions

Re

La fonction NO.SEMAINE (weeknum) ne correspond pas à la norme Européenne.

Elle considère que le 1er janvier est toujours dans la 1ère semaine de l'année, alors qu'en Europe la semaine 1 est la 1ère semaine de 4 jours.

Ce qui fait que certaines années auront un décalage d'une semaine.

Amicalement

Nad

Re-,

Ok, pour NO.SEMAINE, mea culpa.....

Pour DATEPART, on peut sélectionner les arguments :

le premier "ww", pour calculer le numéro de semaine

la date

le premier 2, pour signaler que la semaine commence un lundi (norme européenne)

le deuxième 2, commencer par la première semaine comportant au moins quatre jours dans l'année nouvelle

capture d ecran 2016 07 04 a 22 21 13 capture d ecran 2016 07 04 a 22 21 19 capture d ecran 2016 07 04 a 22 21 31

bonjour,

merci pour vos suggestions

j'ai essayé celle qui me paraissait la plus simple

=ENT(MOD(ENT((A1-2)/7)+0.6;52+5/28))+1

mais cela ne semble pas fonctionner j'ai une erreur.

Lorsque je l'intègre dans la macro sous la forme

Worksheets("Synthesis").Cells(1, 1)=ENT(MOD(ENT((Worksheets("Synthesis").Cells(1,2).value-2)/7)+0.6;52+5/28))+1

il me dit qu'il ya une erreur de synthaxe

Merci d'avance

Nad-Dan a écrit :

Re

On peut aussi ajouter une formule dans la feuille.

En A1, la date est mise par macro

En B1 :

=ENT(MOD(ENT((A1-2)/7)+0.6;52+5/28))+1

Amicalement

Nad

Ce n'est donc pas un code à ajouter dans la macro mais une formule à mettre par exemple en B1.

Amicalement

Nad

re,

Pour la semaine dans ta macro mets ceci :

Range("A1") = DatePart("ww", Date, 2)

Amicalement

Dan

capture1 capture2

Bonjour,

Le code suivant semble fonctionner pour le numéro de semaine

exemple A1 Date du 01/01/2009

en A2 Date désirée

=((A2-A1)/7)+1

A plus

Annette

Correction après vérification,les calendriers sur lesquels je me basais sont erronés.

Leur première semaine démarre au 1 er Janvier, ce qui est faux.

La norme ISO 8601 dit

la première semaine de l'année ISO est celle du premier jeudi de janvier

La semaine dont le lundi est compris entre le 29 décembre et le 4 janvier

Merci à NadDan qui m'a enlevé une fausse idée de la semaine que j'avais depuis "longue date"

Annette

NB (source Wikipdeia.org)

Le système a un cycle de 400 années de 146 097 jours (20 871 semaines), avec une année de longueur moyenne d'exactement 365,2425 jours, exactement comme le calendrier grégorien.

re,

Pour la semaine dans ta macro mets ceci :

Code:

Range("A1") = DatePart("ww", Date, 2)

Amicalement

Dan

Merci beaucoup cela fonctionne parfaitement ! C'est axactement ce dont j'avais besoin !

Bonjour,

Attention, il te manque un argument dans ta formule.....

Lis l'aide de DatePart...

Range("A1") = DatePart("ww", Date, 2, 2)

comme tu l'as écrit, tu commences par la semaine du 1er janvier (valeur par défaut), et non la semaine qui comporte au moins 4 jours (norme européenne)...

Bonne journée

Rechercher des sujets similaires à "recuperer date semaine cours via macro"