Conversion semaine en mois

bigmousse

XLDnaute Occasionnel
Bonjour,
J'ai des resultats à la semaine (semaine 1, semaine 2 ...)
J'aimerais avoir des resultats au mois.
J'aimerais une fonction qui lorsque j'ai comme argument semaine 28 la fonction me renvoie "Juillet" ou "7".
Merci
Mousse
 

hoerwind

XLDnaute Barbatruc
Re : Conversion semaine en mois

Bonjour,

A1 : l'année
A2 : le numéro de la semaine

=MOIS(DATE(A1;1;1)-4-MOD(DATE(A1;1;1)+1;7)+7*A2)

Edition :
Il est bon de préciser qu'étant donné qu'une semaine pouvant tomber à cheval sur deux mois, la formule proposée renvoie le mois du premier jour de la semaine.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Conversion semaine en mois

Bonjour à tous
Le calendrier par semaine est fondamentalement différent du calendrier par mois. Seule certitude : sauf erreur de ma part, les semaines 2, 3, 4 sont en janvier ; 6, 7, 8 en février, 10, 11, 12 en mars, 15, 16 en avril, 19, 20, 21 en mai, 24, 25 en juin, 28, 29 en juillet, 32, 33, 34 en août, 37, 38 en septembre, 41, 42, 43 en octobre, 45, 46, 47 en novembre, 50, 51 en décembre.

Pour les autres (1 , 5, 9, 13, 14, 17, 18, 22, 23, 26, 27, 30, 31, 35, 36, 39, 40, 44, 48, 49, 52 et quelquefois 53, excusez du peu…), elles sont tantôt incluses dans l'un des mois, tantôt à cheval sur deux mois.

Il faut donc établir une convention si l'on veut rattacher les semaines aux mois. Par exemple : est considérée comme semaine d'un mois donné toute semaine dont un jour convenu appartient au mois (sept possibilités).
Ou encore : une semaine dont le jeudi appartient à mois donné est réputée appartenir au dit mois. Cette convention présente l'intérêt d'attacher une semaine au mois qui en contient la majeure partie. (C'est la convention retenue par l'I.S.O. pour rattacher une semaine à une année plutôt qu'à une autre.)

À notre ami de préciser quelle convention il souhaite adopter.
ROGER2327
#4455


Mardi 3 As 138 (Couronnement de Lord Patchogue, miroitier, SQ)
15 Brumaire An CCXIX
2010-W44-5T15:21:51Z
 

pierrejean

XLDnaute Barbatruc
Re : Conversion semaine en mois

Re

Bonjour ROGER

Comme de coutume vous avez parfaitement raison
J'eusse du indiquer que la fonction personnalisée que je propose donne le mois lorsque tous les jours de la semaine sont inclus dans le dit mois sinon donne les 2 mois concernés
 

ROGER2327

XLDnaute Barbatruc
Re : Conversion semaine en mois

Re...
Re

Bonjour ROGER

Comme de coutume vous avez parfaitement raison
J'eusse du indiquer que la fonction personnalisée que je propose donne le mois lorsque tous les jours de la semaine sont inclus dans le dit mois sinon donne les 2 mois concernés
C'est en effet un convention possible. Et je suis sûr qu'on pourrait en imaginer bien d'autres (j'ai vu une fois quelqu'un qui faisait débuter la semaine le samedi...)
C'est pourquoi je demande à notre ami de préciser sa demande.
Amicalement,
ROGER2327
#4456


Mardi 3 As 138 (Couronnement de Lord Patchogue, miroitier, SQ)
15 Brumaire An CCXIX
2010-W44-5T15:41:42Z
 

pierrejean

XLDnaute Barbatruc
Re : Conversion semaine en mois

Re

Notre ami tardant a choisr une convention voici 2 nouvelles fonctions personnalisées
la 1ere avec argument le jour de la semaine
la seconde donnant le mois ayant le maximum de jours (idem a la precedente pour le jeudi)
Bien entendu on pourra etudier toute autre convention
 

Pièces jointes

  • Mois_de_s.xls
    61.5 KB · Affichages: 144

bigmousse

XLDnaute Occasionnel
Re : Conversion semaine en mois

Merci pour vos réponses, et oui en effet j'ai tardé un peu, je suis désolé...
Comme convention, j'ai pris comme condition le lundi.
Si le lundi est en février, toute la semaine le sera. Pour le moment ça me convient et c'est suffisant.
L'objectif est de faire une comparaison entre un indicateur à la semaine (collecte de données terrain) avec un indicateur global (CA, base de données), pour vérifier s'il y a corrélation.
J'ai retouché (bricolé) un peu le code de pierrejean, (car je n'ai pas tout saisi).
Code:
Function prem(an As Integer) As Date
For n = CDate("01/01/" & an) To CDate("07/01/" & an)
  If Weekday(n) = 5 Then prem = n - 3
Next n
End Function
Function Mois_de_s(semaine)
If InStr(UCase(semaine), "SEMAINE") <> 0 Then
  s = CInt(Trim(Replace(UCase(semaine), "SEMAINE", "")))
Else
  s = CInt(Trim(semaine))
End If
deb = prem(Year(Date)) + (s - 1) * 7
fin = deb + 6
If Format(deb, "mmmm") = Format(fin, "mmmm") Then
    Mois_de_s = Format(deb, "mmmm")
Else
    Mois_de_s = Format(deb, "mmmm")
  'Mois_de_s = Format(deb, "mmmm") & "/" & Format(fin, "mmmm")
End If
End Function

Merci à vous
Mousse
 

pierrejean

XLDnaute Barbatruc
Re : Conversion semaine en mois

Re

Quitte a bricoler autant le faire proprement:

VB:
Function prem(an As Integer) As Date
For n = CDate("01/01/" & an) To CDate("07/01/" & an)
If Weekday(n) = 5 Then prem = n - 3
Next n
End Function
Function Mois_de_s(semaine)
If InStr(UCase(semaine), "SEMAINE") <> 0 Then
s = CInt(Trim(Replace(UCase(semaine), "SEMAINE", "")))
Else
s = CInt(Trim(semaine))
End If
deb = prem(Year(Date)) + (s - 1) * 7
Mois_de_s = Format(deb, "mmmm")
End Function
 

Discussions similaires

Réponses
5
Affichages
317

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS