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 :

Récupérer le mois en fonction d'un n° de semaine et d'une année


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 2
    Par défaut Récupérer le mois en fonction d'un n° de semaine et d'une année
    Bonjour,

    J’aimerai récupérer le n° de mois en VBA à partir d’un n° de semaine et d’une année : 2016-sem21.

    Quelqu’un pourrais m’aider svp ??

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Prends un café, puis reviens après avoir réfléchi à la durée d'une semaine (elle peut commencer à l'intérieur d'un mois et se terminer à l'intérieur du mois suivant).
    Ta question est donc à reformuler avec plus de précision.

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 2
    Par défaut
    Pour les semaines à cheval, j'aimerais le mois où il y a le plus de jours dans ces semaines là.
    Je m'exprime mal donc pour exemple : semaine 13 2016 il y a 3 jours en mars et 2 en avril j'aimerai donc qu'il me récupère le mois de mars.
    Pour les semaines complètes d'un mois tel que : semaine 14 2016 les 5 jours sont en avril je veux qu'il me récupère le mois d'avril.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ah ! Que voilà une définition rigolote !
    Mais on va jouer ce jeu-là :
    Il commence par la définition de la date de début de la première semaine de l'année concernée (le reste n'est qu'arithmétique).
    Questions, donc :
    1) sais-tu déterminer cette date ?
    2) si oui : comme,t t'en sers-tu ensuite ? Si non : comment entrevois-tu de t'en servir ensuite ? (juste pour "voir" si tu "vois" bien).

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, via une recherche ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re
    bonjour
    perso les dates et mois avec excel ca fait 3

    mais si je raisonne logiquement

    semaine 13 = 13*7 jour de l'année


    on ajoute donc ce nombre a la date du 01/01/xxxx
    on obtiens ainsi une date complete
    il est facile apres d'en récupérer le mois avec "month"

    et si le jour correspond a "lundi,"mardi" et.... on devine aisément si l'on doit enlever ou pas 11 au mois obtenu

    je le redis c'a n'est qu'une idée
    une base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
     'nombre de jour = 13 semaines * 7 jour
    jour = 13 * 7
     
    mois = Month(CDate("01/01/2016") + jour) ' on ajoute ce nombre de jour a la date du 1 1 2016 avec la fonction month on obtient le mois
     
    days = Weekday(CDate("01/01/2016") + jour) weekday nous donne si je ne me trompre pas le jour de la semaine (1,2,3,et....)
     
    MsgBox Format("01/" & mois & "/2016", "mmmm") & " (" & mois & ")"
     
     
    End Sub
    format(unedate,"ddd") nous donne le jour en texte
    je suis certain qu'avec ca on doit pouvoir trouver le bon truc

    re
    de même que encore plus facile finalement

    si le mois de (la date obtenu -4 jour) <> du (mois de la date obtenu ) alors c'est mois -1
    en ayant controlé si date obtenu est bien la 13 eme auparavant bien sur avec worksheetfunction.weeknum(ta date obtenue)

    c'est juste un raisonnement

    edit:
    logiquement c'est même 4 jour 3 d'un coté 3 de l'autre qui nous font 7 avec le 4 eme

    Bon il ne fallait pas aller chercher bien loin finalement le probleme avait déjà été posé
    ICI!!
    CODE vba


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function SemaineToMois(annee As String, semaine As String) As Integer
        Dim jour As Date
        jour = DateAdd("ww", semaine, DateSerial(annee, 1, 1))
        Debug.Print jour
        SemaineToMois = Month(DateAdd("ww", semaine, DateSerial(annee, 1, 1)))
     
    End Function
     
    Sub essai()
     
        Debug.Print SemaineToMois(2016, 13)
     
    End Sub
    J 'AVAIS ZAPER LE DATEADD

    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonsoir,
    Citation Envoyé par pmelanie Voir le message
    Pour les semaines à cheval, j'aimerais le mois où il y a le plus de jours dans ces semaines là.
    Je m'exprime mal donc pour exemple : semaine 13 2016 il y a 3 jours en mars et 2 en avril j'aimerai donc qu'il me récupère le mois de mars.
    Pour les semaines complètes d'un mois tel que : semaine 14 2016 les 5 jours sont en avril je veux qu'il me récupère le mois d'avril.
    J'ai un doute sur les 5 jours sachant que dans la semaine 13 2016 nous avons le lundi de pâques donc devons prendre en compte du lundi au vendredi ou du mardi au samedi ?
    ces 2 types de semaines dans le travail existent si on considère éventuellement les lundi repos et le samedi travail

    Sinon si je reprends le titre du lien de Docmarti :
    BUG: Les fonctions Format et DatePart peuvent renvoyer un numéro de semaine erroné pour le dernier lundi de l'année
    puis un peu plus bas :
    Lors de la détermination du numéro de semaine d'une date selon la norme ISO 8601, l'appel de la fonction sous-jacente au fichier Oleaut32.dll renvoie par erreur la semaine 53 au lieu de la semaine 1 pour le dernier lundi de certaines années.
    ça ne toucherai que les pc vu qu'il parle de dll

    En tout cas j'ai pas encore essayé sur PC mais DatePart me va pour déterminé le 1er jour de la semaine 1 de l'année choisie (Solution Mac PC bien sur) en norme iso bien sur (j'ai pas intérêt a me louper )
    le résultat :
    En 2000, le 1er jour de la semaine 1 est : 03/01/2000
    il y a 52 semaines

    En 2001, le 1er jour de la semaine 1 est : 01/01/2001
    il y a 52 semaines

    En 2002, le 1er jour de la semaine 1 est : 31/12/2001
    il y a 52 semaines

    En 2003, le 1er jour de la semaine 1 est : 30/12/2002
    il y a 52 semaines

    En 2004, le 1er jour de la semaine 1 est : 29/12/2003
    il y a 53 semaines

    En 2005, le 1er jour de la semaine 1 est : 03/01/2005
    il y a 52 semaines

    En 2006, le 1er jour de la semaine 1 est : 02/01/2006
    il y a 52 semaines

    En 2007, le 1er jour de la semaine 1 est : 01/01/2007
    il y a 52 semaines

    En 2008, le 1er jour de la semaine 1 est : 31/12/2007
    il y a 52 semaines

    En 2009, le 1er jour de la semaine 1 est : 29/12/2008
    il y a 53 semaines

    En 2010, le 1er jour de la semaine 1 est : 04/01/2010
    il y a 52 semaines

    En 2011, le 1er jour de la semaine 1 est : 03/01/2011
    il y a 52 semaines

    En 2012, le 1er jour de la semaine 1 est : 02/01/2012
    il y a 52 semaines

    En 2013, le 1er jour de la semaine 1 est : 31/12/2012
    il y a 52 semaines

    En 2014, le 1er jour de la semaine 1 est : 30/12/2013
    il y a 52 semaines

    En 2015, le 1er jour de la semaine 1 est : 29/12/2014
    il y a 53 semaines

    En 2016, le 1er jour de la semaine 1 est : 04/01/2016
    il y a 52 semaines

    En 2017, le 1er jour de la semaine 1 est : 02/01/2017
    il y a 52 semaines

    En 2018, le 1er jour de la semaine 1 est : 01/01/2018
    il y a 52 semaines

    En 2019, le 1er jour de la semaine 1 est : 31/12/2018
    il y a 52 semaines

    En 2020, le 1er jour de la semaine 1 est : 30/12/2019
    il y a 53 semaines

    En 2021, le 1er jour de la semaine 1 est : 04/01/2021
    il y a 52 semaines

    En 2022, le 1er jour de la semaine 1 est : 03/01/2022
    il y a 52 semaines

    En 2023, le 1er jour de la semaine 1 est : 02/01/2023
    il y a 52 semaines

    En 2024, le 1er jour de la semaine 1 est : 01/01/2024
    il y a 52 semaines

    En 2025, le 1er jour de la semaine 1 est : 30/12/2024
    il y a 52 semaines

    En 2026, le 1er jour de la semaine 1 est : 29/12/2025
    il y a 53 semaines

    En 2027, le 1er jour de la semaine 1 est : 04/01/2027
    il y a 52 semaines

    En 2028, le 1er jour de la semaine 1 est : 03/01/2028
    il y a 52 semaines

    En 2029, le 1er jour de la semaine 1 est : 01/01/2029
    il y a 52 semaines

    En 2030, le 1er jour de la semaine 1 est : 31/12/2029
    il y a 52 semaines
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    coucou TYU
    DatePart me va pour déterminé le 1er jour de la semaine 1 de l'année choisie
    la tu éveille ma curiosité

    je t'envoie ma méthode parMP tout de suite
    envoie la tienne si tu veux par MP bien sur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re,
    bon c'est envoyé, tu me diras ce qu'il en est …

    Edit : j'ai procédé de cette manière là à cause de ce qu'il est dit (en rouge) dans le lien de Docmarti :
    BUG: Les fonctions Format et DatePart peuvent renvoyer un numéro de semaine erroné pour le dernier lundi de l'année
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

Discussions similaires

  1. [2008R2] Récupérer une date à partir d'un numéro de semaine et d'une année.
    Par ff.martin dans le forum Développement
    Réponses: 5
    Dernier message: 24/07/2014, 15h20
  2. Réponses: 3
    Dernier message: 15/08/2013, 21h11
  3. Réponses: 1
    Dernier message: 04/05/2010, 16h58
  4. Réponses: 4
    Dernier message: 15/09/2004, 16h52
  5. Récupérer le mois et l'année d'une date
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 09h17

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