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

  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
    Points : 1
    Points
    1
    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
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    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.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  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
    Points : 1
    Points
    1
    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
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    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).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, via une recherche ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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 extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour patricktoulon
    J 'AVAIS ZAPER LE DATEADD
    T'as surtout zappé deux autres "petites choses" :
    1) la norme ISO applicable
    et
    2)
    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.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    re
    tu lis pas tout unparia dans le post précèdent celui ci j'ai bien dis

    si le mois de (la date obtenu -4 jour) <> du (mois de la date obtenu ) alors c'est mois -1
    en ayant controlé si day(unedate) est plus petit que 4 évidement

    c'est le principe du vbfirsfourday qui intégré dans VBA

    autrment dit si semaine X tombe un 03/0x/2016
    on fait ladate-4 et le mois devrais changer par "month"

    voila

    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Public Function SemaineToMois(annee As String, semaine As String) As String
        Dim jour As Date
        mdate = DateAdd("ww", semaine, DateSerial(annee, 1, 1))
     
        If WorksheetFunction.WeekNum(mdate) > semaine Then mdate = mdate - 7
     
        joursem = Weekday(mdate) - 1    '(-1 pour le calendrier francais)  le jour 1 de la semaine c'est le lundi
     
        debutsem = mdate - joursem + 1
        finsem = mdate - joursem + 7
     
        Debug.Print "date " & mdate
        Debug.Print "ce jour est  un " & Format(mdate, "dddd") & " c 'est le " & joursem & " (er/eme) jour de la semaine "
        Debug.Print "c'est la " & WorksheetFunction.WeekNum(mdate) & " semaine "
        Debug.Print "cette semaine se situe dans le mois de " & Format(mdate, "mmmm ")
        Debug.Print "cette semaine demarre le " & Format(debutsem, "ddd dd mm yyyy")
        Debug.Print "et se termine le  le " & Format(finsem, "dddd dd mm yyyy")
         Debug.Print " Du moins chez nous les gaulois!!"
        SemaineToMois = Month(mdate)
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub essai()
        Debug.Print "mois N°:" & SemaineToMois(2016, 13)
    End Sub
    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 extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    A patricktoulon
    la norme ISO compte pour des prunes ?
    Fais donc un test de ton code avec la semaine N° 5 de l'année 2012 ...
    Sur ce : bonne nuit.

    L'erreur devient flagrante si l'on teste avec la semaine 5 de l'année 2021...
    Voici d'ailleurs ce que l'on peut alors lire dans la fenêtre d'exécution :
    date 29/01/2021
    ce jour est un vendredi c 'est le 5 (er/eme) jour de la semaine
    c'est la 5 semaine
    cette semaine se situe dans le mois de janvier
    cette semaine demarre le lun. 25 01 2021
    et se termine le le dimanche 31 01 2021
    Du moins chez nous les gaulois!!
    Je ne sais pas quels Gaulois tu fréquentes, mais la 5ème semaine de l'année 2021 démarre le 1er février 2021 et non le 25 janvier 2021.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour unparia
    tiens boucler sur 365 jour ca fait un peu .....hein mais bon!!! ca matche

    j'ai fait une fonction qui devient un object (type) qui renvoie les date et valeur demandées

    declaration type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Type infoDate
        MonthName As String
        MonthNumber As Long
        debutsemaine As Date
        finsemaine As Date
        Numbersemaine As Long
    End Type
    Dim info As infoDate
    sub de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Sub essai()
        Debug.Print "mois N°           :" & info_date(2012, 52).MonthNumber
        Debug.Print "mois en lettre    :" & info_date(2012, 52).MonthName
        Debug.Print "debut de semaine  :" & info_date(2012, 52).debutsemaine
        Debug.Print "fin de semaine    :" & info_date(2012, 52).finsemaine
        Debug.Print "Numero de semaine :" & info_date(2012, 52).Numbersemaine
        Debug.Print "=========================="
     
        Debug.Print "mois N°           :" & info_date(2016, 53).MonthNumber
        Debug.Print "mois en lettre    :" & info_date(2016, 53).MonthName
        Debug.Print "debut de semaine  :" & info_date(2016, 53).debutsemaine
        Debug.Print "fin de semaine    :" & info_date(2016, 53).finsemaine
        Debug.Print "Numero de semaine :" & info_date(2016, 53).Numbersemaine
        Debug.Print "=========================="
     
        Debug.Print "mois N°           :" & info_date(2021, 53).MonthNumber
        Debug.Print "mois en lettre    :" & info_date(2021, 53).MonthName
        Debug.Print "debut de semaine  :" & info_date(2021, 53).debutsemaine
        Debug.Print "fin de semaine    :" & info_date(2021, 53).finsemaine
        Debug.Print "Numero de semaine :" & info_date(2021, 53).Numbersemaine
        Debug.Print "=========================="
    End Sub
    fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function info_date(année, sem) As infoDate
        For i = 1 To 364
            mdate = DateSerial(année, 1, i)
            If WorksheetFunction.WeekNum(mdate) = sem Then
                info_date.MonthName = Format(mdate + 1, "mmmm")
                info_date.MonthNumber = Month(mdate + 1)
                info_date.Numbersemaine = Format(mdate + 1, "ww") 'sem
                info_date.debutsemaine = mdate + 1
                info_date.finsemaine = mdate + 7
                Exit For
            End If
        Next
    End Function
    voila j'ai testé pour 2016 OK
    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

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu voudras bien m'excuser, patricktoulon, mais j'arrête de passer mon temps à vérifier tes "essais"... avec des "tiens .." ou non ..
    La solution est simple et tout "écart" n'est que diversion :
    Elle a été indiquée depuis bien plus haut et commence par la détermination de la date de départ de la première semaine de l'année considérée, le reste n'étant dès lors qu'arithmétique élémentaire.
    Amitiés et bonne chance dans ce genre-là ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Expert confirmé
    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
    Points : 4 174
    Points
    4 174
    Par défaut
    bonjour,
    justement c'est à cela que je pensais, car je me souviens de cette discussion dont Docmarti avait donné un lien : https://support.microsoft.com/fr-fr/kb/200299
    afin de définir le n° se semaine correctement, sur cette base il n'y a plus qu'à faire les calcul pour aller au numéro de semaine voulu et voir si tous les jours sont à l'interieur d'un même mois ou à cheval et dans ce cas là déterminé sur quel mois on a le plus de jour
    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 en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tout-à-fait, RyuAutodidacte.
    et cela évitera de se "promener" ...
    Amitiés.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    se promener non mais si un peu quand même

    car dans cette discussion qui a été cité on part d'une date
    alors ici on part de la semaine
    il nous faut donc repérer le jour 1 de la semaine 1 de l'année
    avant d'y ajouter X semaines pour en ressortir le mois, que la date correspondante a cette semaine chevauche entre deux mois ou pas
    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

  15. #15
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    nous faut donc repérer le jour 1 de la semaine 1 de l'année
    avant d'y ajouter X semaines pour en ressortir le mois, que la date correspondante a cette semaine chevauche entre deux mois ou pas
    pardi !
    Et c'est ce qui est dit depuis le tout début ... et que j'aimerais que le demandeur essaye enfin de faire (et c'est on ne peut plus simple) en respectant la norme ISO !

    EDIT

    Pour mémoire : mon message d'hier 13 h 23 :
    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).
    Le demandeur n'a depuis plus donné signe de vie. Il est à noter à ce propos que sa dernière présence remonte à Hier 12h36

    On ne lui a pour l'instant donné aucune chance de répondre. il n'a probablement même pas encore lu les questions qui lui ont été posées ...
    Et il va retrouver ici plusieurs codes au demeurant sujets à caution ... (parmi, heureusement des "pistes" sur ce qu'il doit faire et utiliser).


    EDIT2 : pour ton information : j'avais un peu de temps à perdre et ai voulu donc écrire le code (que je ne montrerai qu'après que le demandeur se sera manifesté) :
    J'obtiens en très exactement deux lignes de code (pas une seule de plus) la date de démarrage de la énième semaine spécifiée de la énième année spécifiée, le tout en parfaite conformité avec la norme ISO. et je n'ai utilisé pour ce faire que deux -pas une de plus non plus- fonctions de VBA : weekday et Dateserial et de l'arithmétique plus qu'élémentaire.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonsoir unparia
    perso avec la date du 01/01/xxxx
    et la fonction weekday
    je remonte la date au "lundi"
    on ajoute n(semaine) après avec dateadd("ww" x semaine, date)
    normalement on retombe sur le lundi que contient cette semaine
    c'est OK pour toi comme ca
    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

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    c'est OK pour toi comme ca
    Cela dépend. Ce ne sera pas suffisant à tous les coups (norme ISO à appliquer)
    Lis mon dernier édit (message précédent) et attendons, si tu le veux bien, le retour du demandeur.

    Edit : je commence à me demander si tu as bien lu et compris la norme ISO.

    EDIT2 : et je me demande également si tu as bien compris que WorksheetFunction.WeekNum ne permet pas de satisfaire à tous coups cette nome ISO (expliqué dans l'aide VBA, d'ailleurs).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    je n'utilise plus la worksheetfunction

    en effet je comprends pas trs bien la norme iso

    tout ce que je sais c'est que

    une semaine qui commence au moins par "jeudi" est compter comme une semaine

    le demandeur a demander le depart d'un numero de semaine
    j'en conclu donc qu'il veut le lundi que ca chevauche ou pas entre deux mois
    donc si je raisonne logiquement
    je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madate =cdate(01/01/2016") '2016 pour l'exemple
    ensuite je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     j = Weekday(mdate) - 1 ' -1 parce que en France nous c'est lundi le debut de semaine
    je soustrait donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madate=madte-j+ 1' +1 car  dans les 7 jours ca contient mémé le lundi contenu dans la semaine
    voila maintenant on a le lundi que contient la semaine 1, il se peut que ce lundi tombe dans l'année inferieur c'est pas un problème
    normalement si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madate =dateadd("ww",2,madate)
    on doit tomber en toute logique sur le lundi que contient la semaine 2
    lundi+7 jours =lundi d'après
    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

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Pour mémoire, donc :
    Lis mon dernier édit (message précédent) et attendons, si tu le veux bien, le retour du demandeur.
    Et j'y tiens.
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    c'est bon apres verif que tout est bon j'ai réduit le moteur de l'exemple en MP a 3 lignes
    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

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