Comparaison semaine VBA

Bonjour,

J'ai 2 dates contenu dans 2 cellules différentes, j'aimerais un boolean qui retoure vrai si les 2 dates appartiennent à la même semaine, c'est possible ?

sub testDate
dim D1 as date, D2 as date
D1 = cells(1,1).value
D2 = cells(1,2).value
if ??????? = true then
    msgbox ("même semaine")
else
    msgbox("semaine différente
end if")

Avez-vous des idées ?

Merci par avance.

Bonjour, teste ceci si c'est bon

Sub testDate()
Dim D1 As Date, D2 As Date
D1 = Cells(1, 1).Value
D2 = Cells(1, 2).Value
If NoSemaineISO(D1) = NoSemaineISO(D2) Then
    MsgBox ("même semaine")
Else
    MsgBox ("semaine différente")
End If
End Sub

Function NoSemaineISO(d As Date) As Integer
    NoSemaineISO = Format(d, "ww", vbMonday, vbFirstFourDays)
End Function

Bonjour,

Ou encore ...

Sub testDate()
Dim D1 As Date, D2 As Date
    D1 = Cells(1, 1).Value
    D2 = Cells(1, 2).Value
    If Application.WeekNum(D1, 2) = Application.WeekNum(D2, 2) Then
        MsgBox ("même semaine")
    Else
        MsgBox ("semaine différente")
    End If
End Sub

A+

Bonjour Frangy,

Je pense qu'avec ta formule, il y aura des bugs en début ou fin d'année.

Teste avec par exemple le 31/12/2015 et le 2/1/2016 (c'est pourtant la semaine 53)

Bonjour M12,

Tout à fait exact

Pour être conforme avec le système de numérotation semaine européenne :

If Application.WeekNum(D1, 21) = Application.WeekNum(D2, 21) Then

A+

Fonctionne parfaitement,

Merci

Bonsoir à tous,

Je persiste à avoir décidément du mal à faire confiance à Microsoft pour tout calcul de numéro de semaine ISO...

La fonction de M12 me renvoie 53 pour le 31/12/2007 ! Un lundi et donc manifestement le 1er jour de la semaine 1 de 2008.

Même chose pour le 31/12/2035 ! Dans la même situation. Un hoquet tous les 28 ans semble-t-il !

J'ai du mal à comprendre ces erreurs sur un calcul qui n'a rien d'ultra-complexe, puisqu'il suffit de définir la date du 1er lundi de l'année (lequel est celui de la semaine contenant le 4 janvier) et pour trancher sur la détermination de l'année dans les cas limites, le placement d'une date par rapport aux lundis semaine 1 des années A-1, A, A+1 (A étant l'année nominale) tranche l'année à prendre en compte.

On attend d'une telle formule qu'elle donne un résultat stable et valide ad-eternam... !

Cordialement.

Rechercher des sujets similaires à "comparaison semaine vba"