IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Formule NO.SEMAINE résultat incohérent [XL-2010]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut Formule NO.SEMAINE résultat incohérent
    Bonjour à tous,

    Je me trouve face à un problème que je ne sais expliquer...
    J'ai créé un outils pour mon travail qui va chercher une date dans une cellule contenant du texte et qui le traduit en numéro de semaine.

    Jusque-là je n'avais aucun problème mais au changement d'année ma formule ne fonctionnait plus :

    Voici la formule : =SI(A8="";"";NO.SEMAINE(DATE(2000+STXT(D8;7;2);STXT(D8;4;2);GAUCHE(D8;2));2)) --> la cellule D8 contient un texte de la forme suivante : « 04 01 16 0577 »

    pour 2016 si la date traduite est le 04/01/2016 alors le résultat est "2" alors qu'il s'agit de la semaine 1....

    maintenant si j'écris la formule de cette manière alors il me donne le bon numéro de semaine à savoir "1" :
    =SI(A8="";"";NO.SEMAINE(4/1/2016;2))

    Je ne cherche pas un moyen détourné pour avoir le bon numéro de semaine avec NO.SEMAINE.ISO le changement de la formule serait trop conséquent. J'aimerai comprendre pourquoi selon la manière dont on donne la date (directement ou en allant prendre une valeur dans une formule) le résultat change....

    Merci d'avance pour votre aide,

  2. #2
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Alors déjà pour être sur de comprendre

    04/01/2016, c'est bien la 2éme semaine, la première ayant commencé un vendredi (je me souviens bien c'était la fête). Donc le 4, c'est le Lundi de la 2éme semaine.

    (4/1/2016), c'est une division et non pas une date, pour pouvoir l'interpréter comme une date excel renvoie donc 00/01/1900 soit la première semaine de l'année 1900.

    Problème solved

  3. #3
    Membre à l'essai
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut
    d'après tous les calendriers papier que j'ai le 04/01/2016 est en semaine 1 (la première semaine de l'année étant celle qui contient un lundi en Europe il me semble) --> c'est pour cela que l'on peut spécifié une méthode en dernier critère de la formule)

    pour ce qui est de l'écriture de la date dans la formule (si je venais a l'écrit comme ça --> 04/01/2016 alors Excel une fois la formule validé me le réécrit sans les "0" c'est à dire 4/1/2016. --> mais Excel me donne un résultat peu importe la manière dont je l'écrit il le reconnait l'écriture comme une date

    Juste si je n'ai pas été assez précis dans ma demande , je n'ai pas de problème pour avoir un résultat (selon la méthode utilisé j'arrive à obtenir le numéro de semaine voulu) seulement je ne peux pas modifier la formule de manière arbitraire chaque année et je suis sûr qu'il y a une explication.

    d'autres idées ?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par axe88 Voir le message
    Voici la formule : =SI(A8="";"";NO.SEMAINE(DATE(2000+STXT(D8;7;2);STXT(D8;4;2);GAUCHE(D8;2));2)) --> la cellule D8 contient un texte de la forme suivante : « 04 01 16 0577 »

    pour 2016 si la date traduite est le 04/01/2016 alors le résultat est "2" alors qu'il s'agit de la semaine 1....

    maintenant si j'écris la formule de cette manière alors il me donne le bon numéro de semaine à savoir "1" :
    =SI(A8="";"";NO.SEMAINE(4/1/2016;2))
    Je viens d'essayer et ça donne "2" dans les deux cas.
    N'y aurait-il pas une cochonnerie quelconque dans ta cellule D8 qui décale le contenu, quelque chose comme un espace ou autre caractère invisible en début de chaine ?

    Pour le n° de semaine, Excel utilise la méthode américaine : la semaine du 01/01 est toujours la semaine 1 alors qu'en France, on considère que si la semaine du 01/01 fait 3 jours ou moins, c'est la semaine 0.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    Bonjour,
    J'ai rencontré le même problème c'est une histoire de norme.
    En europe il y a une norme iso qui dit que la semaine 1 doit comporter au moins 4 jours dans la nouvelle année. alors que ce n'est pas le cas aux états unis.
    Par conséquent excel donne avec no.semaine 53 du 28 au 31/12/2015 et 1 du 1 au 3/1/2016.

    Il existe une formule no.semaine.iso à partir de excel 2013 qui donne les bons résultats. il y a une option dans xl 2010, no.semaine(A1;21) qui renvoie les bonnes valeurs.
    Pour les versions précédentes il faut utiliser une formule barbare que j'ai trouvé sur le net et que voici :
    =ENT((AUJOURDHUI()-SOMME(MOD(DATE(ANNEE(AUJOURDHUI()-MOD(AUJOURDHUI()-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 468
    Par défaut
    Bonjour,

    La fonction NO.SEMAINE à la sauce Microsoft renvoie le numéro de semaine version US alors que la majeure partie du monde utilise la norme ISO.
    Ben oui, Microsoft qui se veut l'alpha et l'oméga des suites bureautiques pour le monde entier se trouve être une suite US.

    Avec les versions antérieures à Excel 2010, il faut passer par des formules de calcul improbable.
    Avec EXCEL 2010 et suivantes, tu peux utiliser NO.SEMAINE(date;21).
    A partir de EXCEL 2013, il y a une nouvelle fonction NO.SEMAINE.ISO(date).

    Donc, dans ton cas (2010), utilise la fonction NO.SEMAINE avec le second argument égal à 21.

    A

  7. #7
    Membre à l'essai
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut
    Bonjour et merci à tous pour vos réponses.

    Je viens de revenir après un long week-end et je ne m'attendais pas à toutes ces réponses.
    Quoi qu'il en soit je pense que ma question a mal été comprise...

    Je ne suis pas à la recherche d'une solution palliative si j'ose. la méthode utilisant NO.SEMAINE.ISO m'est connu et je sais obtenir le bon résultat en changeant la formule.

    ce que je cherche à comprendre c'est pourquoi j'ai un écart de valeur lorsque je tape deux fois la même formule

    en fait si je tape la formule suivante : =NO.SEMAINE(A1;2) avec A1 = 04/01/2016 --> j'obtiens le résultat "1"
    si je tape la formule = NO.SEMAINE(4/1/2016;2) -->j'obtiens le résultat "2"

    J'insiste sur le fait que l'a date se réécrit automatiquement dans la deuxième formule ... initialement j'avais tape : 04/01/2016.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Citation Envoyé par Neutthsch Voir le message
    04/01/2016, c'est bien la 2éme semaine, la première ayant commencé un vendredi (je me souviens bien c'était la fête). Donc le 4, c'est le Lundi de la 2éme semaine.
    Des précisions ont ensuite été apporté mais tout va dans ce sens on devrait dans tous les cas trouver 2. C'est une partie de la réponse.

    Citation Envoyé par Neutthsch Voir le message
    (4/1/2016), c'est une division et non pas une date, pour pouvoir l'interpréter comme une date excel renvoie donc 00/01/1900 soit la première semaine de l'année 1900.
    EDIT1 : C'est une division

    Et je reconfirme.... Tu as écrit =NO.SEMAINE(04/01/2016;2), qui renvoie le numéro de semaine de 4/1/2016=0,..... soit en date 00/01/1900, soit la première semaine de l'année 1900, soit 1.
    04/01/2016 n'ai pas un format d'écriture de date dans une formule, il faut soit écrire "04/01/2016" (avec les guillemets) qui n'ai plus une division mais une chaîne de caractères que excel interprétera comme il peut (entre autre, il reconnait ce type de chaîne comme le format d'affichage de date ce qui nous arrange). Soit avec le format officiel DATE()

    Aide Excel pour la fonction NO.SEMAINE :
    Syntaxe

    NO.SEMAINE(numéro_de_série;méthode)

    numéro_de_série représente une date de la semaine. Les dates doivent être entrées en utilisant la fonction DATE, ou sous la forme de résultats d'autres formules ou fonctions. Par exemple, utilisez DATE(2008,5,23) pour le 23e jour du mois de mai 2008. Des problèmes peuvent survenir si les dates sont entrées sous forme de texte.

    méthode détermine quel jour est considéré comme le début de la semaine. La valeur par défaut est 1.
    EDIT2 : et en respectant cette régle d'écriture on retombe bien sur 2.

  9. #9
    Membre à l'essai
    Homme Profil pro
    ingénieur logistique
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur logistique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut
    Du coup je vais arrêter d'insister et me coucher moi bête

    Merci à toi Neutthsch qui a bien fais d'insister!! je comprends vite mais il faut expliquer longtemps !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/03/2008, 03h00
  2. Résultat incohérent en utilisant NLS_DATE_LANGUAGE
    Par Liberte Outremer dans le forum SQL
    Réponses: 2
    Dernier message: 25/06/2007, 17h16
  3. Réponses: 5
    Dernier message: 19/04/2007, 17h16
  4. Quelle formule donne ces résultats
    Par Vincdeladrome dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/12/2006, 12h34
  5. Résultat incohérent de pow, sqrt
    Par PierrotY dans le forum C++
    Réponses: 15
    Dernier message: 16/03/2005, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo