Fonction n° semaine

bonjour à tous,

la fonction n° semaine st NO.SEMAINE(A1) sur excel

elle se traduit en weeknum en vba

Cells(22, 1).Select

ActiveCell.FormulaR1C1 = "=WEEKNUM(R[-20]C[2])"

mais comme c'est une variable, il me faudrait la fonction correspondante, je la trouve pas.

merci

Fronck

Bonjour

N'est-ce pas : DatePart("ww";;;) ?

Bye !

Bonjour à tous

Bonjour gmb

si tu as par exemple la date en B1 le résultat No semaine en A1 avec normalement la norme ISO

Range("a1") = DatePart("ww", Range("b1"), vbMonday, vbFirstFourDays)

Bonjour,

La formule suivante marchera :

Sub test()
    Cells(22, 1).FormulaR1C1 = "=WEEKNUM(R[-21]C)"
End Sub

Bonjour Raja,

Avec ta formule, le No de semane de cette année, au 1/1/2016 sera 1

alors que c'est la 53 jusqu'au 3/1/16 et elle passera à 1 le 4/1/16

Re,

OK. Utilisons ça alors :

Sub test()
    Cells(22, 1).FormulaR1C1 = "=ISOWEEKNUM(R[-21]C)"
End Sub

Bonjour à tous,

DatePart (comme la fonction d'Excel utilisée avec le paramètre 21) n'est pas fiable utilisée pour définir le numéro de semaine. Elle est en erreur cyclique (tous les 28 ans).

En voici une (mais il n'en manque pas pour assurer un calcul exact pour tous les siècles passés et l'éternité à venir...)

Function NSEM(d As Date) As Integer
    Dim dref
    Application.Volatile
    dref = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 3)
    dref = dref - Weekday(dref) + 2
    NSEM = (d - dref) \ 7 + 1
End Function

La première ligne provient d'une fonction écrite par Laurent Longre, elle définit l'année ISO de référence pour évaluer ensuite le numéro de semaine. [Sur les nombreuses consultations de travaux sur cette question et tous les calculs que j'ai par ailleurs pu faire, je n'ai jamais trouvé mieux pour pointer la bonne année de façon aussi concise. Je lui fais par contre pointer la date du 3 janvier, considérant que c'est la meilleure, non pas tant pour l'efficacité du calcul, plusieurs dates se valent à cet égard, mais surtout pour expliquer et faire comprendre sur quoi repose le calcul.] Les deux dernières lignes pourraient être condensées en une seule...

Cordialement.

bonsoir tous,

merci pour vos réponses.

j'ai pris la formule compléte de M12 qui fonctionne.

Range("a1") = DatePart("ww", Range("b1"), vbMonday, vbFirstFourDays)

mai je comprends pas l'utilité du vbFirstFourDays, même si çà correspond au milieu de la semaine

bonsoir

Fronck

T'as rien compris au numéro de semaine donc !

Bonjour à tous,

Pour éclairer un peu la lanterne: (https://fr.wikipedia.org/wiki/ISO_8601#Num.C3.A9ro_de_semaine)

La norme ISO a défini de façon stricte une règle de numérotation, reconnue internationalement et couramment utilisée :

1 - la semaine commence le lundi

2 - les jours de chaque semaine sont numérotés de 1 (un) pour le lundi, à 7 (sept) pour le dimanche

3 - la semaine 1 est celle qui contient le premier jeudi de l'année.

Rechercher des sujets similaires à "fonction semaine"