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 :

Trouver un mois à partir d'un numéro de semaine et de l'année


Sujet :

Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut Trouver un mois à partir d'un numéro de semaine et de l'année
    Bonjour,

    Pour compléter un tableau chaque mois, je dois trouver le nombre de semaines dans le mois, mais celle-ci varie, pratiquement toujours quatre, quelque fois cinq
    Ce tableau va se construire pour cette année et les années à venir, donc j’aimerai trouver une formule en VBA qui me fasse la distinction entre les mois qui ont quatre semaines et ceux qui en ont cinq comme par exemple Mai pour cette année 2014 juste en passant comme paramètre l’année et le N° de semaine

    Comment puis-je faire ceci ?
    Quelqu’un a-t-il déjà eue à faire cette manip et comment s’en est-il tirer ?

    Merci de votre aide,

    Henri

  2. #2
    Expert confirmé
    Avatar de Phanloga
    Homme Profil pro
    Pilotage RH et Relations Sociales
    Inscrit en
    Avril 2011
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Pilotage RH et Relations Sociales
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 710
    Points : 5 695
    Points
    5 695
    Par défaut
    Bonjour Henri.

    Si je peux me permettre, à un jour près (sauf février) tous les mois ont 4 semaines complètes et un bout de 5e. La valeur tourne toujours autour de 4,5.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    C’est gentil Phanloga, mais c’est trop approximatif, trop à la louche, et je dois faire avancer ça pour plusieurs années
    Je sais qu’il y a un truc avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox ("semaine : " & DatePart("ww", "31/03/2014", vbWednesday, vbUseSystem) & vbLf _
                & "mois : " & DatePart("m", "31/03/2014", vbWednesday, vbUseSystem))
    Pour le moment j’y arrive pas
    Je prends le 31/03/2014 comme exemple car il empiète sur deux mois (Mars / Avril) alors qu’il se rattache à la semaine 14 bien qu’il soit TOUJOURS dans le troisième mois (Mars)

    Si il y en a qui se sont trouvé devant cette problématique merci par avance de leurs conseils

    Henri

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est quoi pour vous le nombre de semaines pour un mois ?

    Est-ce le nombre de lundis par exemple ?

    Cordialement.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    Ce sont les semaines chiffrées : semaine 1, semaine 2, semaine 3. . . . semaine 52

    dans mon exemple :
    Semaine 14 qui est sur le moi d'Avril = du lundi 31 mars au dimanche 6 avril
    Et cette semaine est à cheval sur deux mois ! ! ! (tous comme la semaine 18,27,31,40 et j’en passe)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Henri-gp Voir le message
    Ce sont les semaines chiffrées : semaine 1, semaine 2, semaine 3. . . . semaine 52

    dans mon exemple :
    Semaine 14 qui est sur le moi d'Avril = du lundi 31 mars au dimanche 6 avril
    Et cette semaine est à cheval sur deux mois ! ! ! (tous comme la semaine 18,27,31,40 et j’en passe)
    Si on prend le mois de mars 2014, pour vous ce mois comporte 6 semaines, n'est ce pas ?

    Cordialement.

  7. #7
    Expert confirmé
    Avatar de Phanloga
    Homme Profil pro
    Pilotage RH et Relations Sociales
    Inscrit en
    Avril 2011
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Pilotage RH et Relations Sociales
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 710
    Points : 5 695
    Points
    5 695
    Par défaut
    Ce qu'il serait intéressant de savoir, c'est de quel type de donnée on part et quelle est la finalité de tout ça.

    Par exemple, j'ai besoin pour mon job de déterminer dans quel numéro de semaine se trouve un jour donné. J'utilise une formule qui fait ça très bien.

    On pourrait imaginer la même gymnastique pour donner leur numéro de semaine aux premier et dernier jours de chaque mois et déterminer le nombre de semaines comprises entre les deux par simple différence.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    Bonjour Eric

    Oui, Le mois de mars est à cheval sur 6 semaines effectivement
    Le samedi 1er est sur la semaine 9
    Le lundi 31 sur la semaine 14


    L'exemple est en piece jointe,
    La derniere semaine est celle de novembre 2013, et je dois completer cette feuille à l'infini, et non pas par des copier/coller comme c'est fait actuelement,
    d'ou mon interret de savoir EXACTEMENT combien il y a de semaine dans un mois


    En fait ma question serai proche de ce post :
    http://www.developpez.net/forums/d96...maine-l-annee/

    Mais il n’y a pas eue vraiment de réponse,

    Merci Eric et les autres pour vos réponses actuelles et à venir
    Henri
    Fichiers attachés Fichiers attachés

  9. #9
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Henri-gp Voir le message
    Bonjour Eric

    Oui, Le mois de mars est à cheval sur 6 semaines effectivement
    Le samedi 1er est sur la semaine 9
    Le lundi 31 sur la semaine 14


    L'exemple est en piece jointe,
    La derniere semaine est celle de novembre 2013, et je dois completer cette feuille à l'infini, et non pas par des copier/coller comme c'est fait actuelement,
    d'ou mon interret de savoir EXACTEMENT combien il y a de semaine dans un mois


    En fait ma question serai proche de ce post :
    http://www.developpez.net/forums/d96...maine-l-annee/

    Mais il n’y a pas eue vraiment de réponse,

    Merci Eric et les autres pour vos réponses actuelles et à venir
    Henri
    Bonjour,

    eh bien ce sont des déductions sur des combinaisons de fonction existantes déjà comme expliqué dans le lien que tu as posté.
    Si je dois donner une réponse se référant au titre de la discussion : "Trouver un mois à partir d'un numéro de semaine et de l'année" ,
    je suggérerai la fonction DateSerial imbriquée dans la fonction Month.
    Ne disposant que de deux paramètres année et semaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = Month(DateSerial(2014, 1, w*7))
    dans cet exemple 'w' correspond au nombre de semaine.
    DateSerial combiné avec DatePart, tu peux faire pas mal de calcul relatif.

  10. #10
    Expert confirmé
    Avatar de Phanloga
    Homme Profil pro
    Pilotage RH et Relations Sociales
    Inscrit en
    Avril 2011
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Pilotage RH et Relations Sociales
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 710
    Points : 5 695
    Points
    5 695
    Par défaut
    Le calcul pourrait se faire comme ça.
    Fichiers attachés Fichiers attachés

  11. #11
    Invité
    Invité(e)
    Par défaut
    Visiblement le tableau est calé sur un décompte prenant en compte le lundi. En clair, le nombre de semaines du mois est le nombre de lundis.

    La fonction suivante calcule le nombre de semaines du mois :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Function NbSemainesDuMois(ByVal AnneeEtudiee As Variant, MoisEtudie As Integer, JourDebut As Integer) As Long
     
    Dim DateDebut As Date
    Dim DateATester As Date
    Dim DateFin As Date
    Dim MoisEnCours As Integer
    Dim SemaineEnCours As Integer
    Dim SemaineTestee As Integer
     
        DateDebut = CDate("01/01/" & AnneeEtudiee)
        DateFin = CDate("12/31/" & AnneeEtudiee)
     
        NbSemainesDuMois = 0
        SemaineEnCours = 0
        For DateATester = DateDebut To DateFin
            MoisEnCours = Month(DateATester)
            Select Case MoisEtudie
                   Case MoisEnCours
                       SemaineTestee = Application.WorksheetFunction.WeekNum(DateATester, 2)
                       If SemaineTestee > SemaineEnCours Then 'And Application.WorksheetFunction.Weekday(DateATester, 2) = 1 Then
                          Select Case JourDebut
                                 Case 0
                                      SemaineEnCours = SemaineTestee
                                      NbSemainesDuMois = NbSemainesDuMois + 1
                                 Case Else
                                   If Application.WorksheetFunction.Weekday(DateATester, 2) = JourDebut Then
                                        SemaineEnCours = SemaineTestee
                                        NbSemainesDuMois = NbSemainesDuMois + 1
                                   End If
                          End Select
                       End If
            End Select
        Next DateATester
     
    End Function
    JourDebut correspond au décompte suivant le jour de la semaine qu'on considère. Par exemple, s'il s'agit du lundi alors la valeur sera 1 jusqu'au dimanche =7 (peu importe si la dernière semaine est à cheval sur deux mois). La valeur 0 correspondra au cas où toutes les semaines même à cheval sur un mois sont comptées.

    L'exemple est reporté dans le ficher joint.

    Cordialement.

  12. #12
    Expert confirmé
    Avatar de Phanloga
    Homme Profil pro
    Pilotage RH et Relations Sociales
    Inscrit en
    Avril 2011
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Pilotage RH et Relations Sociales
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 710
    Points : 5 695
    Points
    5 695
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Visiblement le tableau est calé sur un décompte prenant en compte le lundi. En clair, le nombre de semaines du mois est le nombre de lundis.
    Absolument. Mais ça ne sert qu'à déterminer le numéro de la semaine.
    Et comme je fais la différence "(N°semainefin-N°semainedébut)+1", on a bien le nombre de semaines complètes ou pas du mois.

    Ce n'est pas du VB, mais ça donne le résultat attendu.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Phanloga Voir le message
    Absolument. Mais ça ne sert qu'à déterminer le numéro de la semaine.
    Et comme je fais la différence "(N°semainefin-N°semainedébut)+1", on a bien le nombre de semaines complètes ou pas du mois.

    Ce n'est pas du VB, mais ça donne le résultat attendu.
    Bonjour,

    Je ne faisais pas allusion à votre réponse mais au fichier de Henri-gp.

    Cordialement.

  14. #14
    Expert confirmé
    Avatar de Phanloga
    Homme Profil pro
    Pilotage RH et Relations Sociales
    Inscrit en
    Avril 2011
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Pilotage RH et Relations Sociales
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2011
    Messages : 710
    Points : 5 695
    Points
    5 695
    Par défaut
    OK, Eric.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Points : 150
    Points
    150
    Par défaut
    Et bien en fait il suffisait de compter le nombre de jeudi dans le mois ,
    Merci à tous,
    Henri

  16. #16
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Pour info :

    Recommandations de l'Organisation Internationale de Standardisation
    Norme ISO 8601

    - Le lundi est considéré comme le premier jour de la semaine.
    - Les semaines d'une même année sont numérotées de 01 à 52 (parfois 53).
    - La semaine qui porte le numéro 01 est celle qui contient le premier jeudi de janvier.
    - Il peut exister une semaine n°53 (années communes finissant un jeudi, bissextiles finissant un jeudi ou un vendredi).

Discussions similaires

  1. Trouver un mois à partir d'un numéro de semaine et de l'année
    Par patbeautifulday dans le forum Contribuez
    Réponses: 2
    Dernier message: 27/05/2015, 10h59
  2. [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
  3. Récupérer la date à partir d'un numéro de semaine et de l'année
    Par aurelientp dans le forum Général Java
    Réponses: 4
    Dernier message: 11/01/2010, 13h43
  4. Réponses: 6
    Dernier message: 01/03/2007, 13h57
  5. Réponses: 7
    Dernier message: 09/01/2007, 08h44

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