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

Macros et VBA Excel Discussion :

Numero de semaine colonne perso Power Query [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut Numero de semaine colonne perso Power Query
    Bonjour a tous,

    J'ai un petit soucis concernant les numero de semaines dans power query, j'ai créé une colonne personalisée pour faire apperaitre le numero de semaine a partir de dates. Sauf que le numero de semaine n'est pas ISO, c'est decalé de +1 semaine, par exemple nous sommes actuellement en semaine 2 et PQ met mets en semaine 3. Je ne sais pas comment mettre au format ISO. Pour le moment je suis passé par une seconde colonne personnalisée en enlevant 1 a la colonne semaine mais ce n'est pas satisfaisant.

    Si quelqu'un a une idée je suis preneur

    Merci

  2. #2
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 387
    Par défaut
    Citation Envoyé par ChristianBosch Voir le message
    Bonjour,

    Et avec ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =NO.SEMAINE(A1;21)
    Où A1 correspond à votre date.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par ChristianBosch Voir le message
    [...]Pour le moment je suis passé par une seconde colonne personnalisée en enlevant 1 a la colonne semaine mais ce n'est pas satisfaisant.[...]
    Attention que certaines années, les n°s US et européens correspondent, et dans ces cas-là, on ne peut pas enlever 1. On ne peut pas non plus enlever 1 pour la semaine 1 car la semaine 0 n'existe pas. Par contre, il existe des semaines 52 ou 53 qui contiennent des jours de janvier... ^^

    Depuis je ne sais plus quelle version, il existe aussi, dans Excel, la fonction NO.SEMAINE.ISO(...).

    En Power Query, il faut créer sa propre fonction car Power Query calcule les numéros de semaine "à l'américaine"...

    Pour rappel:
    • USA, la semaine 1 est la semaine qui contient le 1er janvier;
    • Europe (et ISO), la semaine 1 est celle qui contient le premier jeudi de janvier.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 291
    Par défaut
    Bonjour
    Comme l'écrit Pierre, la semaine 1 ISO est celle du 1er jeudi de l’année
    Le n° de la semaine ISO se calcule donc par l’écart entre le jeudi de la semaine actuelle et ce premier jeudi de l’année (de l’année du jeudi de la semaine, pas l’année de la date elle-même).

    En Power Query, j'utilise cette fonction personnalisée de ma conception (il y a peut être plus simple)
    Je calcule le jeudi de la semaine en partant de la date, en ajoutant 3 et en retirant le n° du jour en commençant par lundi.
    Puis je calcule le 1er jeudi de l’année en partant du 7 janvier et en retirant le jour de la semaine du 1er janvier avec le critère que la semaine commence le vendredi (Day.Friday) c’est à dire que si le 1er janvier est un vendredi, le 1er jeudi sera le 7.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    (Date as date) => let
    Jeudi_Semaine = Date.AddDays(Date,3-Date.DayOfWeek(Date,Day.Monday)),
    Année=Date.Year(Jeudi_Semaine),
    Premier_Jeudi_An = Date.AddDays(#date(Année,1,7),-Date.DayOfWeek(#date(Année,1,1),Day.Friday)),
    #"N° Semaine" = Duration.Days(Jeudi_Semaine - Premier_Jeudi_An)/7+1
    in
    #"N° Semaine"
    En complément, si vous souhaitez récupérer la semaine au format 2022 S02 il faut modifier la fin de la fonction en utilisant Text.PadStart pour ajouter un 0 les semaines 1 à 9:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    in
    Text.From(Année)&" S"&Text.PadStart(Text.From(#"N° Semaine"),2,"0")
    Stéphane

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour Pierre,
    Depuis je ne sais plus quelle version, il existe aussi, dans Excel, la fonction NO.SEMAINE.ISO(...).
    Il existe aussi la fonction NO.SEMAINE avec comme valeur du second argument 21 qui renvoie le même résultat.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Philippe

    Citation Envoyé par Philippe Tulliez Voir le message
    [...]
    Oui, c'était la solution proposée par Eric, mais comme la demande concerne Power Query, je ne vois pas d'autre solution que la fonction perso en Power Query, comme celle de Stéphane qui est à mon sens l'algorithme le plus simple...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut
    Bonjour à tous et merci pour vos réponses.

    Effectivement, je connais bien la fonction NO.SEMAINE(date;21) qui affiche les semaines en ISO. Le probleme c'est que, comme le souligne Pierre, la fonction n'existe pas dans l'editeur Power Query (merci Microsoft ).

    Du coup je vais essayer de faire comme nous dit Raccourcix, faire une fonction perso dans PQ.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Christian,


    Citation Envoyé par ChristianBosch Voir le message
    [...]Du coup je vais essayer de faire comme nous dit Raccourcix, faire une fonction perso dans PQ.
    Lorsque Power Query est ouvert, créer une requête vide (Accueil/Nouvelle requête/Nouvelle source/Autres source/Requête vide). Tu ouvres l'éditeur avancé (Accueil/Requête/Editeur avancé) et tu y colles le code que Stéphane t'a donné puis tu fermes l'éditeur avancé. Tu renommes ta requête (par Exemple NoSemaineIso) et le tour est joué
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut
    Citation Envoyé par Raccourcix Voir le message
    [...]

    Merci Stephane, cela fonctionne ! Meme si je comprends pas trop le langage

  10. #10
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 291
    Par défaut
    Merci Christian
    Le code utilise quelques fonctions Date de Power Query

    Date.AddDays c'est pour ajouter ou soustraire un nombre de jours à une date (on ne peut pas faire +3 ou -5 comme dans Excel car on ne peut pas avoir des dates et des nombres dans une même formule)
    Date.DayOfWeek c'est la fonction JOURSEM avec un retour entre 0 et 6 et une option du 1er jour de la semaine
    Date.Year c'est la fonction ANNEE
    et enfin Duration.Days c'est pour connaitre le nombre de jours d'une durée. Lorsque qu'on fait l'écart entre deux dates, Excel renvoie un nombre mais PQ renvoie une durée (comme pour Date.AddDays, le type est important dans PQ)

    Stéphane

  11. #11
    Membre confirmé Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Par défaut
    Merci beaucoup pour ce post et vos réponses qui vont m'être très utiles.
    Question complémentaire : je vais avoir besoin de cette fonction personnalisées dans une bonne dizaine de fichiers, suis-je obligé de l'implémenter dans chaque ou bien y-a-t-il moyen de l'exporter dans une sorte de bibliothèque réutilisable dans tous mes fichiers Excel ? Je pense que je n'ai pas d'autres choix que de l'implémenter partout mais sait-on jamais ?

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par LG-69 Voir le message
    [...]suis-je obligé de l'implémenter dans chaque ou bien y-a-t-il moyen de l'exporter dans une sorte de bibliothèque réutilisable dans tous mes fichiers Excel ? Je pense que je n'ai pas d'autres choix que de l'implémenter partout mais sait-on jamais ?
    Si tu as un compte officiel POWER BI chez Microsoft, tu peux la stocker dans le cloud. Cela dit, copier le texte de la fonction dans un OneNote et "réimplémenter" la fonction à chaque besoin n'est pas insurmontable
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre confirmé Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Par défaut
    Merci Pierre, j'ai en effet une licence Pro Power BI, cette piste est donc à creuser.
    On est d'accord que le copier/coller n'est pas insurmontable mais l'idée serait dans le cadre professionnel d'avoir une implémentation centralisée afin de faciliter la maintenance et de permettre le partage plus aisé avec les collègues. Mais là on diverge du sujet initial. En tout cas merci pour la piste du cloud et pour la fonction Power Query qui marche très bien.

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    La fonction Power Query, c'est Stéphane, qui propose un chouette algo

    Pour ce qui est de la fonction à stocker dans le cloud, j'avoue ne pas trop savoir comment ça fonctionne, mais je pense que de toute façon, il faut la copier à un moment ou un autre dans son fichier. Si Stéphane, Chris, Pierre ou Nicolas ont d'autres infos ou d'autres idées, elles sont bienvenues.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. Power Query - Dupliquer colonnes
    Par Pierre Dumas dans le forum POWER
    Réponses: 7
    Dernier message: 23/12/2021, 22h32
  2. [XL-365] Power Query - Extraction dans une nouvelle colonne
    Par Philippe Tulliez dans le forum Conception
    Réponses: 5
    Dernier message: 16/03/2021, 20h38
  3. Réponses: 16
    Dernier message: 11/03/2021, 11h36
  4. Réponses: 6
    Dernier message: 28/05/2019, 13h34
  5. Réponses: 10
    Dernier message: 20/09/2005, 15h32

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