Insérer le numéro de la semaine sous excel [Résolu]

Excel numéro de semaine Semaine sur excel Numéro de semaine excel EXCEL 2007 - Numero de semaine décalé 2010 (Résolu) » Forum - Excel [EXCEL]-Convertir un numéro de semain en mois » Forum - Programmation Numero de semaine sous excel » Forum - Programmation [VBScript] numéro de semaine (Résolu) » Forum - VB / VBA Nombre de semaines entre 2 dates (Résolu) » Forum - Programmation

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

Forum

Excel numéro de semaine Semaine sur excel Numéro de semaine excel EXCEL 2007 - Numero de semaine décalé 2010 (Résolu) » Forum - Excel [EXCEL]-Convertir un numéro de semain en mois » Forum - Programmation Numero de semaine sous excel » Forum - Programmation [VBScript] numéro de semaine (Résolu) » Forum - VB / VBA Nombre de semaines entre 2 dates (Résolu) » Forum - Programmation

Web: www.shapebootstrap.net

107 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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
Cette réponse vous a-t-elle aidé ?  

Reply
réponses:
  • auteur

  • auteur

    Merci

    cette formule nous a sauvé la vie!!!!

  • auteur

    super, merci bcp ^^

  • ratikuss

    Serait-il possible d'expliquer son fonctionnement ? =D

  • auteur

    Merci beaucoup :)

  • auteur

    excelent

  • auteur

    niquel!

  • auteur

    Un grand THANK YOU GUY !!!
    Vous avez rendu un grand service à plus d'un je pense !!!

  • auteur

    je confirme.. bravo.

  • auteur

    cela ne fonctionne pas avec la date 01/01/2010

  • auteur

    bravo chef, té le meilleur

  • auteur

    Il existe deux systèmes de numérotation des semaines :
    Système 1 : la semaine 1 est celle débutant au 1er janvier => système utilisé par l'Education Nationale
    Système 2 : la semaine 1 est celle débutant le premier jeudi de l'année => selon une norme ISO

    Le système 2 est utilisé afin que la première semaine possède au moins 4 jours alors que le système 1 autorise que la semaine fasse 1, 2 ou 3 jours, si par exemple le 1er tombe un vendredi, un samedi ou un dimanche.

    Il arrive que les deux systèmes de numérotation soient synchrones ... mais ce n'est pas systématique (en fait, cela arrive 4 fois sur 7) justement pour l'année 2010.

  • auteur

    Bravo Merci Bravo !!!

  • auteur

    Merci jlppap

    En anglais pour Google Docs :
    =INT(MOD(INT((B4-2)/7)+0,6;52+5/28))+1

  • auteur

    je dirais même plus, que les paramètres régionaux n'entrent pas en jeux...
    =INT(MOD(INT((B4-2)/7)+6/10;52+5/28))+1

  • auteur

    Merci !!!!!!! Vous avez sauvé mon dimanche :)

  • auteur

    salut
    sur le pack office 2010, le nom de la fonction a changé

    'fonction excel 2007
    'Range("AH3") = "=NO.SEMAINE("A1")"
    'fonction excel 2010
    Range("AH3") = "=WeekNum("A1")"

  • auteur

    FORMILE CALCUL NUMMERO SEMAINE
    Faux pour les années 2013 ; 2039 etc

  • auteur

    @kiki : faux pourquoi ?

  • auteur

    Cette formule corrige l'anomalie des année qui commencent pas une semaine de moins de 3 jours (qui fait beuger la formule excel du n° de semaine) :
    Avec A1 la cellule à tester :
    =+SI((JOURSEM(DATE(ANNEE(A1);1;1))-1)<5;NO.SEMAINE(A1);NO.SEMAINE(A1)-1)

  • auteur

    Merci controlher, ta formule me semble fonctionner à merveille !

  • auteur

    elle a cependant l'inconvénient, par rapport à celle de jlppap,
    d'être tributaire de la fonction "No.Semaine" de Excel...
    si tu changes d'ordi, de version d'excel, de langue d'installation de Windows, etc.
    ton fichier créé aujourd'hui ne sera peut-être plus fonctionnel dans 5 ou 10 ans...

    alors que la formule de jlpap (à condition de remplacer "0,6" par "6/10") est universelle,
    est fonctionne d'ailleurs sans problème depuis au moins le 28 novembre 2007
    :D

  • auteur

    Bonjour,
    Je n'ai pas trouvé d'aléas sur la formule de jlppap!!
    Toutes les autres semblent "beuguer" sur un exemple bête du 8/12/02
    Chacune des formules affiche semaine "50"... hors cette semaine là appartient à la semaine 49.
    Seule la 1ère formule fonctionne et cette dernière (plus complexe) ... et qui n'est pas de moi je vous rassure =)

    =+ENT((J15-SOMME(MOD(DATE(ANNEE(A1-MOD(A1-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)

    Merci en tout cas pour ce forum qui m'a bcp aidé =)

  • auteur

    erf... le calendrier 2002 que j'ai trouvé n'a pas les semaines affichées, pour vérifier huhu...
    le 8 décembre, en tout cas, c'était un dimanche, ça c'est sur...
    http://www.exe6.net/aubade/images/calendrier2002/12decembre2002.jpg
    :p

  • auteur

    Merci, c'est ce que je cherchais :), j'ai juste remplacé 0,6 par 0.6

  • auteur

    Moi je suis partis de la formule de Jlpapp
    =ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
    Et je l'ai transformé afin que le jour soit pris automatiquement:
    =ENT(MOD(ENT((AUJOUDHUI()-2)/7)+0,6;52+5/28))+1
    Et j'avais besoin de la semaine suivante donc j'ai remplacé le +1 par un +2

  • auteur

    Merci

  • auteur

    Bonjour,

    Il existe maintenant une fonction Excel WeekNum(LaDate) qui retourne la semaine correspondante.

    Ciao

  • auteur

    elle existait déjà avant,
    mais est-ce que maintenant, elle est moins américaine que avant ?
    :D

  • eriiic

    Bonjour,

    elle existait déjà avant,
    mais est-ce que maintenant, elle est moins américaine que avant ?

    Oui, avec 2010 tu peux ajouter le paramètre 21 et avoir le n° de semaine ISO (européen) :
    =NO.SEMAINE(A1;21)
    (mais plantera si ouvert sur 2003...)

    eric

  • auteur

    http://www.excelabo.net/excel/numero_semaine_norme_europeenne

  • auteur

    Merci Eric !

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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...

Reply
réponses:
  • auteur

  • auteur

    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.

  • auteur

    Plus simple... La semaine 1 est la première semaine de 4 jours ou plus.

  • auteur

    Bonjour,

    Vu d'un autre angle :

    Toute année non bissextile commençant par un jeudi aura 53 semaines,
    Toute année bissextile commençant par un mercredi ou un jeudi aura 53 semaines.

    Euh... J'ai bon là ???

    Cordialement,
    Arthemus.

  • auteur

    Il y a 12 mois dans une année et 4 semaines par mois.
    Il y a 4 mois où il y a 5 semaines, donc 4 semaines de plus.
    Il y a donc 52 semaines dans une année et non 53 :)

  • auteur

    @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...

  • auteur

    1 semaine c'est 7 j donc pour toi 1 mois c'est 28j ,calcul sur 12mois on a 28 j en trop donc 4 semaines 4*12 48 +4 52 sauf lors des années bisextile ou justement tu as 1 seul jour de 53eme semaines

  • auteur

    ça n'est pas tant le fait que l'année fasse 52 semaines ou bien 52 semaines+1/7° de semaine.
    C'est surtout que les Années ne commencent pas par le premier jour de la semaine...

    et donc, le calcul n'est pas (7x4)x12+(7x4); mais selon les années :
    3+(7x4)x12+(7*3)+4
    le bout de semaine + 48 semaines + 3 semaines + l'autre bout de semaine
    1 numéro + 48 numéros + 3 numéros + 1 numéros = 53 numéros, même s'il n'y a que 52*7 jours..

  • auteur

    peut importe les années finissent pas un dimanche non plus , donc 7 j = 1 semaines peut importe que sa commence le lundi ou le vendredi

  • auteur

    tout à fait...
    et si tu pars en congé demain matin pendant un semaine, 7 jours exactement,
    tu auras été en congés de mardi à mardi,
    cette semaine et la suivante...
    Tu poses une semaine de congés,
    et auras 2 semaines de location : la semaine 23 et la semaine 24...

    7 jours= une semaine, peu importe qd tu commences tes vacances,
    mais si tu mets ça dans les cases "Semaine n°XX", il t'en faut 2...

    Pareil si tu prends 52 semaines de congés,
    suivant comment tu commences, il te faudra soit 52 semaines de location, soit 53...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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...

Reply
réponses:
  • auteur

  • auteur

    Rebonjour,

    En modifiant la formule comme ceci,
    "=ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28,25))+1"
    ça marche du feu de dieu !!!!!

    (Les années bissextiles ?!?)

  • auteur

    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

  • auteur

    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)

  • auteur

    Désolé, sur mon post précédent, il faut lire "+1462" à la place de "+1461".

  • auteur

    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.

  • auteur

    oui, cette formule me semble cohérente
    puisque qd on coche l'option "Options/Calcul/Calendrier depuis 1904",
    cela décale toutes les dates de 1462 jours
    (1er janvier 2010=40179 en "normal", =38717 en "1904")
    on a donc un décalage de 365+365+365+366+1 jours = 1462.

    en utilisant la fonction de jlpap sans changement,
    on regarde en fait le résultat de 4 ans (et 1 jour) en arrière.

    Rajouter ces 1462 jours permet donc de retomber sur nos pattes.
    (j'étais arrivé à la même formule,
    mais panne de synchro ADSL ( GRRRR!!! ) =impossible de te répondre avant...)

    Bravo pour avoir trouvé cette soluce pour tte la génération 1904
    ^_^

  • auteur

    Merci pour tes réponses :

    Quand Gordon répond à Arthemus, James West n'a qu'à bien se tenir !!! ;)
    Allez, j'abuse encore une fois :
    Je ne sais toujours pas le pourquoi du "-2" et du "+0.6" dans la formule, tu as une idée ?
    C'est pour satisfaire mon immense curiosité intellectuelle ;o)

    Encore merci
    Cordialement,

  • auteur

    j'avoue le que "Gordon" était trop tentant
    (même si ça n'était pas une question au sujet du Flash(player) )

    en règle générale, je signe plutôt "Yen Rieur"

    je ne sais pas exactement pourquoi le "-2" et le "+6/10"

    j'imagine que c'est pour tomber sur des "début de semaine"

    Un peu comme dans ma réponse à Niglo pour la formule inverse :
    c'est tjrs les problèmes du CM2 avec le paysan qui veut cloturer son champ
    et que tu te retrouves tjrs avec un piquet en trop ou en moins
    suivant le nombre de cotés
    ^_^

    le "-2" ça te permet de changer les semaines le lundi,
    sinon, c'est le samedi que ça change
    (vu que le 01/01/1900 est un dimanche)

    et le "6/10", c'est pluss compliqué,
    c'est pour tenir compte des années bissextiles j'imagine...
    j'ai pas bien étudié ça...

    tout ce que je sais, c'est que si tu le mets pas,
    ça décale certaines années en totalité...
    Certaines années du 1 janvier au 31 décembre sont bonnes,
    et d'autres sont décalées de 1 semaine, en entier aussi...

    Voici celles qui ne sont pas correctes :
    1901, 1902, 1903, ..., 06, 07, 08, ..., 12, 13, 14,..., 17, 18, 19, 20, ..., 23, 24, 25, ..., 28, 29, 30, 31...

    (c'est même pas tjrs la même quantité !!

    mmmh.... ça a éveillé ma curiosité ça...
    dés que j'ai du temps,
    je décortique cette fonction pour comprendre pourquoi 6/10
    (et surtout, pour 5/28 !!!)

  • auteur

    Salut Yen,

    Pour le 5/28 c'est facile (enfin je pense) :
    une année c'est 365+1/4 de jours ce qui donne en semaines :
    365/7 + 1/28 ou en développant un petit peu le 1er membre :
    364/7 + 1/7 + 1/28 ce qui donne :
    52 + 1/7 + 1/28 en réduisant au même dénominateur les 2 derniers membres :
    52 + 5/28 (n'oublies pas que la formule calcule un numéro de semaine, il faut donc bien raisonner en semaines !).

    Voilà CQFD !

    Ton approche pour le "-2" est intéressante, il reste que je coince vraiment pour le "0,6".
    En tout cas chapeau à jlppap pour cette magnifique formule !

    jlppap, si tu nous lis, fais nous un signe... C'est pour satisfaire mon immense curiosité intellectuelle...! ;o)

    Encore merci Yen "Gordon" Rieur,
    Cordialement.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 ...

Reply
réponses:
  • auteur

    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

  • auteur

    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 ! !

  • auteur

    @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 ^_^ )

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

=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.

Reply
réponses:
  • auteur

    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...

  • auteur

    faute de frappe :

    il ne faut evidement pas lire 2008/01,
    mais bien 2010/01 : la première semaine de 2010...
    ^_^

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 ;-)

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci beaucoup pour ton aide!! Je me voyais assez mal refaire tout à cause d'une seule formule. Encore merci

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply
réponses:
  • random

    il y a une methode de choix du jour de départ dans la fonction

  • random

    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.

  • auteur

    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 ;-)

  • michel_m

    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

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

    bonjour cela ne marche pas toujours office ne marche pas forcement la méthode dejlppap focntionne sur tous les pc

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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))

Reply
réponses:
  • auteur

    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 ^^

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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...

Reply
réponses:
  • auteur

    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 !!!

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

    tu as essayé la formule de jlppap ?

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

    je l'ai testé, elle fonctionne pour ttes les années !!

  • auteur

    Bonjour,

    quand j'utilise votre formule, j'ai cette mention qui apparaît dans la cellule "#NAME?". Avez-vous une idée du pourquoi ?

    merci pour votre réponse

    postite1

  • auteur

    dans 2 cases différentes, tapes :
    =ENT(12.34)

    =MOD(12.34)

    déjà, on saura si c'est ENT ou MOD qui pose problème...

    et après, ça doit sans doute venir de l'install de ton Excel,
    des options, tt ça tt ça...

    c'est quelle version que tu utilises ?

  • auteur

    je suis trop clown...

    si
    =ENT(MOD(ENT((B4-2)/7)+0,6;52+5/28))+1
    ne marche pas, c'est peut être que ton Windows utilises des points pour faire les virgules
    ;op

    essaye
    =ENT(MOD(ENT((B4-2)/7)+0.6;52+5/28))+1

  • auteur

    Attention ENT en Français et INT en Anglais
    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

=WEEKNUM(C12+4-WEEKDAY(C12;2))

Reply
réponses:
  • auteur

    Formule qui ne marche que certaines années, par exemple fin 2008 et début 2009, mais pas pour janvier 2010.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci jmib0, je regarde comment intégrer votre réponse avec la formule de jlppap.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply
réponses:
  • auteur

  • auteur

    Bonjour,

    la formule de Luc marche très bien si B4 est la date du jour [=AUJOURDHUI() ]

  • auteur

    celle formule ne fonctionne pas pour l'année 2009.

  • auteur

    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 !!!!
    ^_^

  • auteur

    Je suis d'accord!

    J'ai fait tout simplement ceci :
    =ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1

    où aujourdhui() renvoie 12/08/09 et bien le résultat est 32.... au lieu de 33....

  • auteur

    Non !!! Résultat 33, formule opérationnelle .... peut-être une erreur de frappe.

  • auteur

    J'ai trouver !

    J'avais la même erreur que tête jaune sauf que j'utilisait la fonction Date(9;8;12) pour tester.
    Mais attention Date(9;8;12) renvoi 12/08/1909 et non 2009 !!!

    Et en 1909, le 12 aout tombait bien en semaine 32...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

<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>

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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)

Reply
réponses:
  • auteur

    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...

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed