Insérer le numéro de la semaine sous excel
Résolu/Fermé
Bonjour,
J'ai créer un fichier sous Excel et je dois afficher dans ce fichier le numéro de la semaine en cours.
J'avais réussi avec la fonction NO.SEMAINE mais quand j'ai changé le fichier de PC la formule n'a plus fonctionné.
Est ce que quelqu'un aurait une solution pour que cette fonction remarche (en sachant qu'elle n'est plus dans les fonctions crées d'avances) ou une autre solution.
Merci d'avance
claire35760
J'ai créer un fichier sous Excel et je dois afficher dans ce fichier le numéro de la semaine en cours.
J'avais réussi avec la fonction NO.SEMAINE mais quand j'ai changé le fichier de PC la formule n'a plus fonctionné.
Est ce que quelqu'un aurait une solution pour que cette fonction remarche (en sachant qu'elle n'est plus dans les fonctions crées d'avances) ou une autre solution.
Merci d'avance
claire35760
A voir également:
- Excel numéro de semaine et année
- Numéro de semaine excel décalé - Meilleures réponses
- Formule semaine excel - Meilleures réponses
- Liste déroulante excel - Guide
- Numero prive - Guide
- Si et excel - Guide
- Formule excel - Guide
- Word et excel gratuit - Guide
28 réponses
Bonjour à tous,
une solution un peu tardive, j'en conviens, mais je l'utilise et cela fonctionne à merveille; et peu importe l'année.
Utiliser la formule : date recherchée en B4
=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
bonne semaine
une solution un peu tardive, j'en conviens, mais je l'utilise et cela fonctionne à merveille; et peu importe l'année.
Utiliser la formule : date recherchée en B4
=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
bonne semaine
pour répondre à ceux qui disent que la semaine 53 n'existe pas,
si elle existe en Europe.
Parce qu'en Europe, contrairement aux étazuniens créateurs d'Office,
on considère qu'une 2CV garée dans un parking
sur la ligne entre la place 134 et la place 135 occupe 2 places.
Même si la voiture continue de ne faire qu'une seule place de large.
De même,
une année de 52 semaines de long
qui se gare mal va empiéter sur 53 semaines.
c'est le cas de 2010...
si elle existe en Europe.
Parce qu'en Europe, contrairement aux étazuniens créateurs d'Office,
on considère qu'une 2CV garée dans un parking
sur la ligne entre la place 134 et la place 135 occupe 2 places.
Même si la voiture continue de ne faire qu'une seule place de large.
De même,
une année de 52 semaines de long
qui se gare mal va empiéter sur 53 semaines.
c'est le cas de 2010...
Le numéro de semaine du 1er janvier selon la norme ISO est assez simple à déterminer :
- si le 1er janvier est un lundi, mardi, mercredi, jeudi il est dans la semaine 01
- si le 1er janvier est un vendredi, il est dans la semaine 53 de l'année précédente.
- si le 1er janvier est un dimanche, il est dans la semaine 52 de l'année précédente.
- si le 1er janvier est un samedi et que l'année précédente est bisextile (ex. 1/1/2005), il est dans la semaine 53 de l'année précédente, sinon il est dans la semaine 52 de l'année précédente.
- si le 1er janvier est un lundi, mardi, mercredi, jeudi il est dans la semaine 01
- si le 1er janvier est un vendredi, il est dans la semaine 53 de l'année précédente.
- si le 1er janvier est un dimanche, il est dans la semaine 52 de l'année précédente.
- si le 1er janvier est un samedi et que l'année précédente est bisextile (ex. 1/1/2005), il est dans la semaine 53 de l'année précédente, sinon il est dans la semaine 52 de l'année précédente.
@joelar :
le problème, c'est qu'il n'y a pas dans chaque année
4 mois où il y a exactement 5 semaines.
Sinon, ça ferait 8 mois de 28 jours et 4 mois de 35 jours...
Par contre, ce qui est sur, c'est qu'une année fait forcément 365 ou 366 jours...
hors 52x7=364, donc, ça ne tombe jamais juste.
Et même si ça tombait juste,
ce qui est sur, c'est que si tu veux garer 52 voitures côte à côte
et que la première est garée à cheval sur 2 places,
tu occuperas 53 places de parking avec tes 52 voitures...
le problème, c'est qu'il n'y a pas dans chaque année
4 mois où il y a exactement 5 semaines.
Sinon, ça ferait 8 mois de 28 jours et 4 mois de 35 jours...
Par contre, ce qui est sur, c'est qu'une année fait forcément 365 ou 366 jours...
hors 52x7=364, donc, ça ne tombe jamais juste.
Et même si ça tombait juste,
ce qui est sur, c'est que si tu veux garer 52 voitures côte à côte
et que la première est garée à cheval sur 2 places,
tu occuperas 53 places de parking avec tes 52 voitures...
Bonjour,
Pour moi, la formule "=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1" foire pour B4 allant du 29/12/2008 au 04/01/2010 inclus avec un décalage de -1 par rapport aux calendriers carton.
Je ne comprends pas pourquoi, et ça m'embête bien, je trouvais cette formule sympa...
Pour moi, la formule "=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1" foire pour B4 allant du 29/12/2008 au 04/01/2010 inclus avec un décalage de -1 par rapport aux calendriers carton.
Je ne comprends pas pourquoi, et ça m'embête bien, je trouvais cette formule sympa...
Bizarre tout de même que tu soies le seul pour lequel la formule ne marche pas...
(surtout pour des dates entre 2008 et 2010,
cela parait étrange vu que c'est en plein
pendant la période où plein de réponses ont été postées...
et je ne vois pas bien comment passer
d'un modulo 52+5/28 = 52,1785714285714
à .......... 52+500/2825 = 52,1769911504425
résout le problème
Es-tu sur que tu as des calendriers cartons Européens ???
^_^
[edit
Après vérifications, ta formule ne marche pas :
elle dit que le 01/01/2010 est la semaine 1
au lieu d'être la semaine 53 de 2009...
Lis les autres réponses sur les semaines 53
huhu
(surtout pour des dates entre 2008 et 2010,
cela parait étrange vu que c'est en plein
pendant la période où plein de réponses ont été postées...
et je ne vois pas bien comment passer
d'un modulo 52+5/28 = 52,1785714285714
à .......... 52+500/2825 = 52,1769911504425
résout le problème
Es-tu sur que tu as des calendriers cartons Européens ???
^_^
[edit
Après vérifications, ta formule ne marche pas :
elle dit que le 01/01/2010 est la semaine 1
au lieu d'être la semaine 53 de 2009...
Lis les autres réponses sur les semaines 53
huhu
Salut et merci pour ta réponse,
Effectivement, mon changement de modulo n'est pas légitime et il est fort à parier qu'à un moment ou un autre ça déconera. Le fait est que ça marche ! J'ai bien semaine 53 de 2009 pour le 01/01/2010 et j'ai des calendrier carton de La Poste.
J'ai néanmoins remis la formule comme à l'origine (mais ça ne marche pas pour moi).
Question 1 : mon excel est configuré avec un calendrier à 1904 pour pouvoir faire des calculs de temps négatifs. Est-ce que tu penses que ça peut avoir une incidence ?
Question 2 : je vois que tu as l'air de t'y connaître, peux-tu m'expliquer le pourquoi du "-2" et du "+0.6" dans la formule ?
Rem.1 : je suis persuadé que la formule est bonne, je veux juste comprendre pourquoi elle ne marche pas chez moi ;)
Rem.2 : j'ai remplacé le "-2" par "+1461" pour combler le décalage éventuel entre le 01/01/1900 et le 01/01/1904 et ça marche aussi du feu de dieu (chez moi) !!!
ça donne la formule suivante : "=ENT(MOD(ENT((B4+1461)/7)+0,6;52+5/28))+1".
Rem.3 : point intéressant : la fontion NUM.SEMAINE() de Morefunc génère chez moi les mêmes erreurs que la formule de jlppap. J'en conclue que c'est bien chez moi qu'il y a un problème...Mais lequel ??? Je désespère car j'ai déjà lu tout le sujet avant de vous écrire...
Cordialement,
Arthemus.
--> Version Excel : Excel 2002 (10.2614.2625)
Effectivement, mon changement de modulo n'est pas légitime et il est fort à parier qu'à un moment ou un autre ça déconera. Le fait est que ça marche ! J'ai bien semaine 53 de 2009 pour le 01/01/2010 et j'ai des calendrier carton de La Poste.
J'ai néanmoins remis la formule comme à l'origine (mais ça ne marche pas pour moi).
Question 1 : mon excel est configuré avec un calendrier à 1904 pour pouvoir faire des calculs de temps négatifs. Est-ce que tu penses que ça peut avoir une incidence ?
Question 2 : je vois que tu as l'air de t'y connaître, peux-tu m'expliquer le pourquoi du "-2" et du "+0.6" dans la formule ?
Rem.1 : je suis persuadé que la formule est bonne, je veux juste comprendre pourquoi elle ne marche pas chez moi ;)
Rem.2 : j'ai remplacé le "-2" par "+1461" pour combler le décalage éventuel entre le 01/01/1900 et le 01/01/1904 et ça marche aussi du feu de dieu (chez moi) !!!
ça donne la formule suivante : "=ENT(MOD(ENT((B4+1461)/7)+0,6;52+5/28))+1".
Rem.3 : point intéressant : la fontion NUM.SEMAINE() de Morefunc génère chez moi les mêmes erreurs que la formule de jlppap. J'en conclue que c'est bien chez moi qu'il y a un problème...Mais lequel ??? Je désespère car j'ai déjà lu tout le sujet avant de vous écrire...
Cordialement,
Arthemus.
--> Version Excel : Excel 2002 (10.2614.2625)
Rebonjour,
Après test minutieux, je confirme que pour moi, la formule de jlppap et la fonction NUM.SEMAINE() de MoreFunc ne fonctionnent pas pour un fichier Excel configuré avec un calendrier débutant le 01/01/1904 (pour l'utilisation de temps négatifs).
Pour la semaine du 29/12/2008 au 04/01/2009, le numéro de semaine calculé par ces fonctions est : 53 au lieu de 01 sur un calendrier carton ISO.
Pour la période du 05/01/2009 au 03/01/2010, il y a un décalage de -1 du résultat de ces fonctions par rapport au numéro de semaine d'un calendrier ISO.
Je confirme aussi qu'en intercalant "+1462" dans la formule de jlppap, ça marche (pour un calendrier débutant au 01/01/1904). Ce qui donne :
"=ENT(MOD(ENT((B4+1462-2)/7)+0,6;52+5/28))+1"
Pensez-vous que cette formule soit légitime ?
Cordialement,
Arthemus.
Après test minutieux, je confirme que pour moi, la formule de jlppap et la fonction NUM.SEMAINE() de MoreFunc ne fonctionnent pas pour un fichier Excel configuré avec un calendrier débutant le 01/01/1904 (pour l'utilisation de temps négatifs).
Pour la semaine du 29/12/2008 au 04/01/2009, le numéro de semaine calculé par ces fonctions est : 53 au lieu de 01 sur un calendrier carton ISO.
Pour la période du 05/01/2009 au 03/01/2010, il y a un décalage de -1 du résultat de ces fonctions par rapport au numéro de semaine d'un calendrier ISO.
Je confirme aussi qu'en intercalant "+1462" dans la formule de jlppap, ça marche (pour un calendrier débutant au 01/01/1904). Ce qui donne :
"=ENT(MOD(ENT((B4+1462-2)/7)+0,6;52+5/28))+1"
Pensez-vous que cette formule soit légitime ?
Cordialement,
Arthemus.
Bonjour,
Le : =ENT(MOD(ENT((D5-2)/7)+0,6;52+5/28))+1
marche tres bien pour moi ... Merci
J'aurais cependeant besoin de l'inverse de la formule ...
Je cherche a entrer le numéro de la semaine et l'année ... et que cela me donne le Lundi sous forme de date ... par exemple
Je tape le numéro de la semaine : 35 de l'année : 2010 ... ca me donne :
30/08/2010 ...
Le : =ENT(MOD(ENT((D5-2)/7)+0,6;52+5/28))+1
marche tres bien pour moi ... Merci
J'aurais cependeant besoin de l'inverse de la formule ...
Je cherche a entrer le numéro de la semaine et l'année ... et que cela me donne le Lundi sous forme de date ... par exemple
Je tape le numéro de la semaine : 35 de l'année : 2010 ... ca me donne :
30/08/2010 ...
j'ai une solution,
elle est moche, mais elle marche
huhu
en A3, la semaine
en B3, l'année
=DATE(B3;1;1)-JOURSEM(DATE(B3;1;1))+9 +(A3-ENT(MOD(ENT((DATE(B3;1;1)-JOURSEM(DATE(B3;1;1))+9-2)/7)+6/10;52+5/28))-1)*7
en gros, je trouve le premier lundi de l'année : DATE(B3;1;1)-JOURSEM(DATE(B3;1;1))+9
ensuite, je trouve à quelle numéro de semaine correspond ce premier lundi grace à la formule de JPAP
maintenant, on a un premier lundi,
on rajoute 7 fois le nombre de semaine à trouver moins le numéro de la semaine de départ
et voila...
en gros, pour semaine 35 de 2010 :
premier lundi = 4 janvier = Sem 1 => 4 janvier + ( 35-1 )*7 = 30 aout
j'ai testé avec plein de dates, ça à l'air de marcher...
...colonne A =ENT(ALEA()*53)+1
...colonne B =ENT(ALEA()*400)+1950
...colonne C = ma formule
...colonne D = la formule de JPAP sur mon résultat
...colonne E = ANNEE(C..)
...deux mises en forme conditionnelles pour faire flasher si A <> D ou si E <> B
...recopié ça sur tout l'écran
...et F9 pour faire bouger tt ça...
...statistiquement, entre 1950 et 2349, j'aurais du détecter...
pour les semaines 01, 51, 52 et 53,
j'ai testé de 95 à 2015 (mais sans vérifier sur des vrais calendrieris papiers)
ça passe aussi...
à condition que le lundi de la semaine 2009s01 soit bien le 29 décembre 2008...
je vous laisse tester vous même
^_^
PS :
pour améliorer la formule de JPAP, j'ai transformé "0.6" en "6/10"
pour ne pas être piégé par les paramètres régionnaux en "décimal point" ou "décimale virgule"
c'est vrai quoi JPAP, elle était améliorable ta formule !!
:op
elle est moche, mais elle marche
huhu
en A3, la semaine
en B3, l'année
=DATE(B3;1;1)-JOURSEM(DATE(B3;1;1))+9 +(A3-ENT(MOD(ENT((DATE(B3;1;1)-JOURSEM(DATE(B3;1;1))+9-2)/7)+6/10;52+5/28))-1)*7
en gros, je trouve le premier lundi de l'année : DATE(B3;1;1)-JOURSEM(DATE(B3;1;1))+9
ensuite, je trouve à quelle numéro de semaine correspond ce premier lundi grace à la formule de JPAP
maintenant, on a un premier lundi,
on rajoute 7 fois le nombre de semaine à trouver moins le numéro de la semaine de départ
et voila...
en gros, pour semaine 35 de 2010 :
premier lundi = 4 janvier = Sem 1 => 4 janvier + ( 35-1 )*7 = 30 aout
j'ai testé avec plein de dates, ça à l'air de marcher...
...colonne A =ENT(ALEA()*53)+1
...colonne B =ENT(ALEA()*400)+1950
...colonne C = ma formule
...colonne D = la formule de JPAP sur mon résultat
...colonne E = ANNEE(C..)
...deux mises en forme conditionnelles pour faire flasher si A <> D ou si E <> B
...recopié ça sur tout l'écran
...et F9 pour faire bouger tt ça...
...statistiquement, entre 1950 et 2349, j'aurais du détecter...
pour les semaines 01, 51, 52 et 53,
j'ai testé de 95 à 2015 (mais sans vérifier sur des vrais calendrieris papiers)
ça passe aussi...
à condition que le lundi de la semaine 2009s01 soit bien le 29 décembre 2008...
je vous laisse tester vous même
^_^
PS :
pour améliorer la formule de JPAP, j'ai transformé "0.6" en "6/10"
pour ne pas être piégé par les paramètres régionnaux en "décimal point" ou "décimale virgule"
c'est vrai quoi JPAP, elle était améliorable ta formule !!
:op
j'ai une solution alternative
en A1 l'année
en B1 le n° de la semaine ISO
on détermine le lundi de cette semaine par la formule :
=DATE(A1;1;1)+SI(JOURSEM(DATE(A1;1;1);2)<=4;JOURSEM(DATE(A1;1;1);2)-4;8-JOURSEM(DATE(A1;1;1);2))+(7*(A2-1))
le si opère le correctif qui permet de déterminer le premier lundi de l'année ISO et ensuit c'est simplissime on ajoute autant de fois 7 que je n° de semaine -1 (réfléchissons pour savoir pourquoi -1 ! !
en A1 l'année
en B1 le n° de la semaine ISO
on détermine le lundi de cette semaine par la formule :
=DATE(A1;1;1)+SI(JOURSEM(DATE(A1;1;1);2)<=4;JOURSEM(DATE(A1;1;1);2)-4;8-JOURSEM(DATE(A1;1;1);2))+(7*(A2-1))
le si opère le correctif qui permet de déterminer le premier lundi de l'année ISO et ensuit c'est simplissime on ajoute autant de fois 7 que je n° de semaine -1 (réfléchissons pour savoir pourquoi -1 ! !
@jjhillaire bon début ^_^
maintenant, pour pouvoir détrôner la solution de jlpapil faudrait que "tout" soit dans une seule formule : éviter qu'il y ait l'année dans une case, la semaine (B1 ou A2) dans une autre, etc.
Mais qu'il n'y ait que 2 cases : en B4, la date concernée, et la case de la formule...
C'est très jouable comme modif... (et ça permet de pouvoir la décliner sur des colonnes entières pour vérifier les différentes années ^_^ )
maintenant, pour pouvoir détrôner la solution de jlpapil faudrait que "tout" soit dans une seule formule : éviter qu'il y ait l'année dans une case, la semaine (B1 ou A2) dans une autre, etc.
Mais qu'il n'y ait que 2 cases : en B4, la date concernée, et la case de la formule...
C'est très jouable comme modif... (et ça permet de pouvoir la décliner sur des colonnes entières pour vérifier les différentes années ^_^ )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
J'ai essayé cette formule mais elle pose un problème avec le 01/01/2010, elle me renvoie une semaine 53.
J'ai essayé cette formule mais elle pose un problème avec le 01/01/2010, elle me renvoie une semaine 53.
et il a raison...
si tu regardes la date en question dans un calendrier
(en dble cliquant sur l'horloge de ton PC par exemple)
tu verras que le 1er Janv 2010 tombera un vendredi
et que le 1er janv 2009 tombe un jeudi.
et donc, c'est effectivement un cas où il y aura 53 semaines dans l'année
puisque les 4 jours
lundi 28 décembre 2009
mardi 29 décembre 2009
mercredi 30 décembre 2009
jeudi 31 décembre 2009
ne deviennent pas la semaine 2008/01
d'où l'intéret de cette formule qui tiend compte de cela
et qui ne mets pas systématiquement le 1 janv en semaine 01...
si tu regardes la date en question dans un calendrier
(en dble cliquant sur l'horloge de ton PC par exemple)
tu verras que le 1er Janv 2010 tombera un vendredi
et que le 1er janv 2009 tombe un jeudi.
et donc, c'est effectivement un cas où il y aura 53 semaines dans l'année
puisque les 4 jours
lundi 28 décembre 2009
mardi 29 décembre 2009
mercredi 30 décembre 2009
jeudi 31 décembre 2009
ne deviennent pas la semaine 2008/01
d'où l'intéret de cette formule qui tiend compte de cela
et qui ne mets pas systématiquement le 1 janv en semaine 01...
togaf
Messages postés
1
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
1 février 2008
2
1 févr. 2008 à 06:48
1 févr. 2008 à 06:48
Merci jlppap pour la formule. Pourriez-vous expliquer le pourquoi des éléments qui composent la formule, mis à part MOD et ENT qui sont des fonctions connues.
Merci d'avance
Merci d'avance
La réponse est simple : Il faut utiliser DatePart en précisant que la première semaine est celle du 4 janvier (puisqu'elle comporte minimum 4 jours en janvier)
Function NumeroSemaine(ByVal strDate As Date) As Integer
NumeroSemaine = DatePart("ww", strDate, vbMonday, vbFirstFourDays)
End Function
Et voila ;-)
Function NumeroSemaine(ByVal strDate As Date) As Integer
NumeroSemaine = DatePart("ww", strDate, vbMonday, vbFirstFourDays)
End Function
Et voila ;-)
Merci beaucoup pour ton aide!! Je me voyais assez mal refaire tout à cause d'une seule formule. Encore merci
Bonjour Claire,
Puisqu'avant tu utilisais la fonction NO.SEMAINE, tu vas pouvoir faire continuer à utiliser tes classeurs sans changement (?).
MAIS... il faut savoir que cette fonction Excel comporte un bug. Il suffit pour s'en convaincre de demander en quelle semaine on est : le résultat est en avance d'une semaine en 2005 !
En effet, en général, le 1er janvier tombe en cours d'une semaine qui se trouve "à cheval" sur deux années A et A-1. Pour que cette semaine à cheval porte le numéro 01, il faut qu'elle contienne au moins 4 jours dans l'année A. Dans le cas contraire, elle sera affectée à l'année A-1, et portera le numéro 52 (ou 53, mais je n'entre pas dans le détail).
La macro NO.SEMAINE ne se casse pas la tête : elle inclut systématiquement le 1er janvier en semaine 01.
Donc fais gaffe : peut-être te faut-il ôter 1 à ton numéro de semaine en 2005 pour que tes résultats soient correct.
Bonne journée.
Armojax.
Puisqu'avant tu utilisais la fonction NO.SEMAINE, tu vas pouvoir faire continuer à utiliser tes classeurs sans changement (?).
MAIS... il faut savoir que cette fonction Excel comporte un bug. Il suffit pour s'en convaincre de demander en quelle semaine on est : le résultat est en avance d'une semaine en 2005 !
En effet, en général, le 1er janvier tombe en cours d'une semaine qui se trouve "à cheval" sur deux années A et A-1. Pour que cette semaine à cheval porte le numéro 01, il faut qu'elle contienne au moins 4 jours dans l'année A. Dans le cas contraire, elle sera affectée à l'année A-1, et portera le numéro 52 (ou 53, mais je n'entre pas dans le détail).
La macro NO.SEMAINE ne se casse pas la tête : elle inclut systématiquement le 1er janvier en semaine 01.
Donc fais gaffe : peut-être te faut-il ôter 1 à ton numéro de semaine en 2005 pour que tes résultats soient correct.
Bonne journée.
Armojax.
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
11 févr. 2005 à 08:42
11 févr. 2005 à 08:42
il y a une methode de choix du jour de départ dans la fonction
Armojax
>
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
11 févr. 2005 à 08:51
11 févr. 2005 à 08:51
Exactement.
Et en faisant partir les semaines du lundi, comme c'est la règle courante, on a bien le problème en 2005, et on l'aura aussi en 2006.
Et en faisant partir les semaines du lundi, comme c'est la règle courante, on a bien le problème en 2005, et on l'aura aussi en 2006.
Bonjour,
J'arrive un peu tard dans le débat juste pour préciser que ceci n'est pas un bug mais un "américanisme". En effet en Europe, la première semaine de l'année doit comporter au moins 4 jours pour être considérée comme semaine 1, mais pas aux Etats Unis ou la règle est : Première semaine de l'année = semaine du premier janvier.
On retrouve cette différence avec Outlook, si vous allez visitez les Outils/Options/Options du calendrier vous trouverez ce menu déroulant qui vous permet de choisir comment Outlook affiche les numéros de semaines : Première semaine de 4 jours, ou Commence le premier janvier (par défaut) ou Première semaine complète.
Dommage que ce choix ne soit pas possible sous Excel ;-)
J'arrive un peu tard dans le débat juste pour préciser que ceci n'est pas un bug mais un "américanisme". En effet en Europe, la première semaine de l'année doit comporter au moins 4 jours pour être considérée comme semaine 1, mais pas aux Etats Unis ou la règle est : Première semaine de l'année = semaine du premier janvier.
On retrouve cette différence avec Outlook, si vous allez visitez les Outils/Options/Options du calendrier vous trouverez ce menu déroulant qui vous permet de choisir comment Outlook affiche les numéros de semaines : Première semaine de 4 jours, ou Commence le premier janvier (par défaut) ou Première semaine complète.
Dommage que ce choix ne soit pas possible sous Excel ;-)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
>
Tippa
25 sept. 2008 à 10:33
25 sept. 2008 à 10:33
Salut Tippa,
Pour trouver le N° de semaine européen (ISO) d'une date, voir le site de Laurent Longre:
http://xcell05.free.fr/pages/form/dateheure.htm#Numsemaine
cordialement
Pour trouver le N° de semaine européen (ISO) d'une date, voir le site de Laurent Longre:
http://xcell05.free.fr/pages/form/dateheure.htm#Numsemaine
cordialement
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
404
20 janv. 2010 à 11:42
20 janv. 2010 à 11:42
pour ceux qui utiliserai le vba:
Function NOSEM(D As Date) As Long 'La fonction suivante renvoie le numéro de semaine conforme à la norme ISO, _ utilisée dans les pays européens (la première semaine d'un mois étant définie _ comme la première semaine comportant au moins quatre jours dans le mois). D = Int(D) NOSEM = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1) NOSEM = ((D - NOSEM - 3 + (Weekday(NOSEM) + 1) Mod 7)) \ 7 + 1 End Function
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
28 janv. 2005 à 18:30
28 janv. 2005 à 18:30
c'est tout bete
tu fais outil macro complementaire
et tu coches les macro en +
il va te redemander ton disque d'installation
et tout marchera comme avant
tu fais outil macro complementaire
et tu coches les macro en +
il va te redemander ton disque d'installation
et tout marchera comme avant
J'ai eu le même problème au boulot.
Je l'ai contourné par la formule :
=TRONQUE((B1-(B2-1900)*365.25)/7)+1
B1 étant la date du jour et B2 l'année (=ANNEE(B1))
Je l'ai contourné par la formule :
=TRONQUE((B1-(B2-1900)*365.25)/7)+1
B1 étant la date du jour et B2 l'année (=ANNEE(B1))
Cette méthode ne fonctionne pas pour tous les cas.
Le premier de l'an, ne se trouve pas forcement dans la première semaine de l'année.
D'un autre coté, peut-on dire que le dimanche 01 janvier 2006 est une semaine à lui tout seul ?
La règle de numérotation des semaines est-elle différente selon les pays ?
Voila autant de variables à mettre en jeu pour une fonction qui parrait assez simple au départ.
Avec cette formule le samedi 07 janvier 2006 ne fait plus partie de la même semaine que le lundi 02 janvier 2006.
Ce qui parrait problématique excépté si on ne s'occupe que des jours ouvrés, mais quand même ^^
Le premier de l'an, ne se trouve pas forcement dans la première semaine de l'année.
D'un autre coté, peut-on dire que le dimanche 01 janvier 2006 est une semaine à lui tout seul ?
La règle de numérotation des semaines est-elle différente selon les pays ?
Voila autant de variables à mettre en jeu pour une fonction qui parrait assez simple au départ.
Avec cette formule le samedi 07 janvier 2006 ne fait plus partie de la même semaine que le lundi 02 janvier 2006.
Ce qui parrait problématique excépté si on ne s'occupe que des jours ouvrés, mais quand même ^^
pour ma part, je viens de m'en créer une qui marche
pour ttes les années que j'ai pensé à tester...
(c'est à dire celles dont j'ai un calendrier sous le nez... ^^
ENT((A1-DATEVAL("1/1/"&ANNEE(A1))+JOURSEM(DATEVAL("1/1/"&ANNEE(A1)))-2)/7)+1
avec bien sur, A1 contient la date que vous voulez...
en gros,
ça fais la différence entre la date et le premier janvier de l'année concernée
A1-DATEVAL("1/1/"&ANNEE(A1))
ça tiend compte du jour de la semaine qu'est le premier janvier
+JOURSEM(DATEVAL("1/1/"&ANNEE(A1)))
ça retire 2 pour que les changements s'opère les lundis
-2
et après, on divise par 7,
on prds la valeur entière
et on rajoute 1...
en tt cas, ça marche au moins pour 2007, 2008 et 2009.
si ça peut aider qq'1...
pour ttes les années que j'ai pensé à tester...
(c'est à dire celles dont j'ai un calendrier sous le nez... ^^
ENT((A1-DATEVAL("1/1/"&ANNEE(A1))+JOURSEM(DATEVAL("1/1/"&ANNEE(A1)))-2)/7)+1
avec bien sur, A1 contient la date que vous voulez...
en gros,
ça fais la différence entre la date et le premier janvier de l'année concernée
A1-DATEVAL("1/1/"&ANNEE(A1))
ça tiend compte du jour de la semaine qu'est le premier janvier
+JOURSEM(DATEVAL("1/1/"&ANNEE(A1)))
ça retire 2 pour que les changements s'opère les lundis
-2
et après, on divise par 7,
on prds la valeur entière
et on rajoute 1...
en tt cas, ça marche au moins pour 2007, 2008 et 2009.
si ça peut aider qq'1...
en fait, je viens de tester ma formule
sur d'autres années passées et ça ne marche pas pour 2006...
(qd le 1er janvier appartient à la semaine 52...)
donc, j'annule mon post précédent
(et m'en excuse huhu)
par contre, j'adopte avec grde joie la formule
=ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
qui doit même fonctionner sous excel 2.0 !!
grand merci à l'auteur !!!
sur d'autres années passées et ça ne marche pas pour 2006...
(qd le 1er janvier appartient à la semaine 52...)
donc, j'annule mon post précédent
(et m'en excuse huhu)
par contre, j'adopte avec grde joie la formule
=ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
qui doit même fonctionner sous excel 2.0 !!
grand merci à l'auteur !!!
Je n'arrive pas a faire fonctionner cette formule !
Je remplace A3 par ma cellule qui contient la date mais il m'indique #NOM :S
Je remplace A3 par ma cellule qui contient la date mais il m'indique #NOM :S
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
1 févr. 2008 à 08:03
1 févr. 2008 à 08:03
Bonjour,
On peut également utiliser DatePart en VBA en créant une fonction dans un module :
Il suffit d'utiliser cette fonction comme une formule de calcul.
;o)
Polux
On peut également utiliser DatePart en VBA en créant une fonction dans un module :
Function ReturnNumWeek(ByVal strDate As Date) As Integer ReturnNumWeek = DatePart("w", strDate) End Function
Il suffit d'utiliser cette fonction comme une formule de calcul.
;o)
Polux
=WEEKNUM(C12+4-WEEKDAY(C12;2))
Bonjour à tous,
Quelqu'un pourrait donner une explication à cette formule fournie par jllap
qui retourne le numéro de la semaine à partir d'une date?
Utiliser la formule : date recherchée en B4
=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
Merci
Luc.
Quelqu'un pourrait donner une explication à cette formule fournie par jllap
qui retourne le numéro de la semaine à partir d'une date?
Utiliser la formule : date recherchée en B4
=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
Merci
Luc.
Peux-tu expliquer pourquoi tu dis ça ?
quels seraient les jours qui ne marcheraient pas avec cette formule ???
je remets ici mon mail de l'année dernière, le n°15 dans la liste ci-dessus.
(en ayant corrigé la faute de frappe qui portait à confusion)
------------
15 yenrioeur, le jeudi 31 janvier 2008 à 20:22:20
et il a raison...
si tu regardes la date en question dans un calendrier
(en dble cliquant sur l'horloge de ton PC par exemple)
tu verras que le 1er Janv 2010 tombera un vendredi
et que le 1er janv 2009 tombe un jeudi.
et donc, c'est effectivement un cas où il y aura 53 semaines dans l'année
puisque les 4 jours
lundi 28 décembre 2009
mardi 29 décembre 2009
mercredi 30 décembre 2009
jeudi 31 décembre 2009
ne deviedront pas la semaine 2010/01
d'où l'intéret de cette formule qui tiend compte de cela
et qui ne mets pas systématiquement le 1 janv en semaine 01...
------------
je viens de revérifié, c'est tjours vrai
huhu
Outlook et sa façon de compter américaine veut nous faire croire
que le lundi 28 décembre 2009 sera la première semaine de 2010,
ce qui est faux avec notre manière française de compter les semaines...
d'où le besoin initial d'avoir une formule qui calcule "vraiment"
et qui se différencie bien de la fonction "semaine" de Excel...
Bravo une année de pluss à l'auteur !!!!
^_^
quels seraient les jours qui ne marcheraient pas avec cette formule ???
je remets ici mon mail de l'année dernière, le n°15 dans la liste ci-dessus.
(en ayant corrigé la faute de frappe qui portait à confusion)
------------
15 yenrioeur, le jeudi 31 janvier 2008 à 20:22:20
et il a raison...
si tu regardes la date en question dans un calendrier
(en dble cliquant sur l'horloge de ton PC par exemple)
tu verras que le 1er Janv 2010 tombera un vendredi
et que le 1er janv 2009 tombe un jeudi.
et donc, c'est effectivement un cas où il y aura 53 semaines dans l'année
puisque les 4 jours
lundi 28 décembre 2009
mardi 29 décembre 2009
mercredi 30 décembre 2009
jeudi 31 décembre 2009
ne deviedront pas la semaine 2010/01
d'où l'intéret de cette formule qui tiend compte de cela
et qui ne mets pas systématiquement le 1 janv en semaine 01...
------------
je viens de revérifié, c'est tjours vrai
huhu
Outlook et sa façon de compter américaine veut nous faire croire
que le lundi 28 décembre 2009 sera la première semaine de 2010,
ce qui est faux avec notre manière française de compter les semaines...
d'où le besoin initial d'avoir une formule qui calcule "vraiment"
et qui se différencie bien de la fonction "semaine" de Excel...
Bravo une année de pluss à l'auteur !!!!
^_^
<code>Bonjour à toutes et à tous, En me basant sur la formule de JLPPAP et à l'aide des normes ISO fournies par NICL, j'ai établi ce tableau (sous Excel 2007). Il démontre clairement, à mon avis, que la formule de JLPPAP est on ne peut plus juste. Par contre celle d'Excel n'est pas fausse pour les EU. Simplement elle n'est pas aux normes européennes. <code> Valeur retournée par la Valeur retournée par formule de JLPPAP la formule d'Excel 2007 =ENT(MOD(ENT((??-2)/7)+0,6;52+5/28))+1 =NO.SEMAINE(??;2) lundi 1 janvier 2001 1 1 mardi 1 janvier 2002 1 1 mercredi 1 janvier 2003 1 1 jeudi 1 janvier 2009 1 1 vendredi 1 janvier 2010 53 1 dimanche 1 janvier 2006 52 1 vendredi 1 janvier 2016 53 1 samedi 1 janvier 2005 53 (année précédente bisextile) 1 samedi 1 janvier 2011 52 (année précédente NON bisextile) 1 (Les ?? dans les formules respectives représentent les références des cellules où sont situées les données dates) PS : samedi 16 janvier 2010 2 (Date fournie par Coco7412 le 31/1/2010) C'est bien 2 et non 3 : donc formule juste ! J'espère que ceci vous sera utile. Amicalement.JP</code>
De mon côté j'ai besoin de l'année + numéro de semaine.
Exemple : 201201 ou 201252
La formule ci-dessus renvoie le numéro de semaine sur 1 chiffre. Semaine = 5 par ex, ce qui me fait 20125.
Problème : pour garantir une suite chronologique, je dois donc faire apparaître ce numéro de semaine sur 2 chiffres (01,02,05,10,52)
Si mon num de semaine est inférieur à 10, je dois donc ajouter un zéro :
Voici la formule : =ANNEE(A1)&SI(ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1>=10;ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1;0&ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1)
Exemple : 201201 ou 201252
La formule ci-dessus renvoie le numéro de semaine sur 1 chiffre. Semaine = 5 par ex, ce qui me fait 20125.
Problème : pour garantir une suite chronologique, je dois donc faire apparaître ce numéro de semaine sur 2 chiffres (01,02,05,10,52)
Si mon num de semaine est inférieur à 10, je dois donc ajouter un zéro :
Voici la formule : =ANNEE(A1)&SI(ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1>=10;ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1;0&ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1)
perso, je préfère la formule :
= ANNEE(A1)&DROITE("0"&(ENT(MOD(ENT((A1-2)/7)+6/10;52+5/28))+1);2)
qui évite la répétition, et en mettant 6/10,
tu évites que ta formule plante sur les ordis d'informaticiens,
qui mettent un "." au lieu d'une "," pour pouvoir taper plus vite d'une seule main sur le clavier numérique...
= ANNEE(A1)&DROITE("0"&(ENT(MOD(ENT((A1-2)/7)+6/10;52+5/28))+1);2)
qui évite la répétition, et en mettant 6/10,
tu évites que ta formule plante sur les ordis d'informaticiens,
qui mettent un "." au lieu d'une "," pour pouvoir taper plus vite d'une seule main sur le clavier numérique...
11 mars 2009 à 15:39
cette formule nous a sauvé la vie!!!!
18 janv. 2010 à 12:13