|
|
|
|
La préccision de la mesure est certe important mais pas primordiale.
Configuration: Windows XP Internet Explorer 6.0 |
Répondre à blux
|
Bonjour,
Sub Sem_Jour()
Dim Sem As Integer
Dim Jour As Integer
Dim Mois As Integer
Dim D As Long, F As Long
Dim W As Integer
Dim TB
Sem = 22 'exemple du N° de semaine
TB = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
D = DateSerial(Year(Now), 1, 1)
F = DateSerial(Year(Now), 12, 31)
TB(1) = TB(1) + ((F - D) - 365)
W = Weekday(D, vbMonday) 'Lundi=jour 1 de semaine
Jour = ((Sem - 1) * 7)
If W < 5 Then Jour = Jour + W - 1
For Mois = 0 To 11
W = W + TB(Mois)
If W > Jour Then Exit For
Next Mois
Mois = Mois + 1
End Sub
Si tu le voulais par formule tu dit, je la transforemer en fonction. A+ L'expérience instruit plus sûrement que le conseil. (André Gide) Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) |
Bon, beh aujourd'hui j'ai trouver autre chose
Public Function SEM_MOIS(Sem As Range) As Integer
Dim NbJours As Integer, D As Long
Application.Volatile
If Sem < 1 Or Sem > 52 Then
SEM_MOIS = "#ERREUR"
Exit Function
End If
D = Weekday("01/01/" & Year(Now), vbUseSystemDayOfWeek)
NbJours = ((Sem - 1) * 7) - D + 1
D = DateValue("01/01/" & Year(Now)) + NbJours
SEM_MOIS = Month(D)
End Function
Et tu l'emploi comme une formule excel si le N° de la semaine est, par exemple, en C23 tu met dans la colonne D =SEM_MOIS(C23) A+ L'expérience instruit plus sûrement que le conseil. (André Gide) Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) |