Calcul N° semaine si date présente

Bonjour à tous,

Je me heurte à un problème sur VBA que je n'arrive pas à résoudre. Je souhaiterai lorsque l'on appuie sur un bouton que le N° de semaine soit calculé automatiquement en colonne B si une date est présente en colonne A. J'ai tout d'abord pensé à faire une incrémentation mais je ne sais pas le faire en fonction d'une ligne donnée.

Merci pour votre aide. Je vous joins le fichier Excel en exemple.

Salut Uchi !

Et hop !

Bonjour et bonne année,

Essaie cette procédure.

Cdlt.

Public Sub Calcul_numero_semaine()
Dim ws As Worksheet
Dim lRows As Long, I As Long

    Application.ScreenUpdating = False
    Set ws = ActiveSheet

    With ws
        .Cells(1).CurrentRegion.Offset(1, 1).ClearContents
        lRows = .Cells(Rows.Count, 1).End(xlUp).Row
        For I = 2 To lRows
            If .Cells(I, 1) <> "" Then .Cells(I, 2) = NumSem(.Cells(I, 1))
        Next I
    End With

    Set ws = Nothing

End Sub

Private Function NumSem(dDate As Date) As Integer
Dim t As Long

    t = DateSerial(Year(dDate + (8 - Weekday(dDate)) Mod 7 - 3), 1, 1)
    NumSem = ((dDate - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1

End Function

Merci à vous deux pour votre réponse très rapide. C'est exactement ce qu'il me fallait. Je préfère la solution de Gaz0line, c'est celle que j'arrive le mieux à comprendre.

Bonne année à tous les deux!

RE,

Sujet fermé, mais il serait intéressant de vérifier l'exactitude de la formule proposée par Gaz0line.

Et implicitement, celle que je propose (qui n'est pas de moi! ).

De mémoire, la fonction suivante est faillible :

semaine = Format(Date, "ww", vbMonday, vbFirstFourDays)

Cdlt.

Je viens effectivement de constater une erreur sur cette macro. Sur mon PC cela fonctionne parfaitement, mais sur l'ordi d'un ami il y a un décalage d'une semaine supplémentaire. Apparemment cela est dû à un problème de norme américaine et européenne. Je vais comparer avec ta macro et je te redis.

J'utilise cette fonction depuis 5 ans au boulot, et je n'ai jamais eu de problème.

Certes c'est toujours sur le même pc.

Enfin pas exactement la même, celle-ci :

Format(DatePart("ww", [VariableDeDate], vbMonday, vbFirstFourDays), "00")

Bonjour,

formule valable depuis 2000 si pas avant

n° de semaine ISO d'après Laurent LONGRE (MVP Excel)

en C2:

=ENT(MOD(ENT((A2-2)/7)+0,6;52+5/28))+1

P.

Rechercher des sujets similaires à "calcul semaine date presente"