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 :

calcul date avec numero semaine et annee


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut calcul date avec numero semaine et annee
    Je cherche depuis 3 jours une fonction VB EXCEL pour déterminer une date ( Le dimanche) en fonction du numéro de semaine et de l'année. Ex Sem46 en 2007 ( Dim 11 11). Je lance donc ce défi pour une appli qui FONCTIONNE DS TOUS LES CAS! (sous VB EXCEL) Merci d'avance.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir;

    Je n'arrive pas à la même date que toi ...

    Pourquoi ?

    Parce que la définition de la première semaine de l'année est paramétrable

    Alors voilà comment je calculerais, en convention de mon pays :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click()
      semaine = 46
      annee = 2007
      MsgBox DateAdd("d", (vbSunday - WeekDay("01/01/" & annee)) + ((semaine) * 7), "01/01/" & annee)
    End Sub

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Par défaut
    bonjour,

    si on considère que la première semaine de l'année est celle à 4 jours, la méthode est la suivante sauf erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       Dim d As Date
       Dim iAn As Integer, iSem As Integer
       iSem = 52
       iAn = 2000
       d = DateAdd("d", iSem * 7, "1/1/" & iAn) + IIf(DatePart("ww", "1/1/" & iAn, vbMonday, vbFirstFourDays) > 1, 7, 0)
       Debug.Print d + 1 - Weekday(d, vbSunday)
    Exemples :
    An 2000 sem 52 => dimanche = 31/12/2000
    An 2000 sem 1 => dimanche = 09/01/2000

    Formule simplifiable et à vérifier...

    Philippe

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Oui, philben.

    Nous arrivons ainsi tous deux au même résultat pour la 46ème semaine de 2007 (à savoir le 18 novembre et non, comme gobc06 , le 11 novembre...).

    Bien sur... (et voilà pourquoi la convention de base est indispensable, pardi).

    Amitiés

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut
    Oui autant pour moi .POur la Sem46 en 2007 le dimanche tombe bien le 18 et non le 11.
    Merci à ucfoutu et à philben de vous interesser à mon Pb, mais je me suis mal expliqué sans doute, je cherche une fonction GENERALE qui aprés saisie du NUMERO DE SEMAINE puis de l'ANNEE (ou récupération sur feuille de calcul) me donne une grille hebdomadaire commencant le dimanche précedent le lundi (1er jour de la Semaine).

    Je reprends donc l'exemple de la Sem 46 en 2007 ce que je cherche à déterminer à TOUS LES COUPS aprés avoir saisi No de Sem et Année, c'est par exemple pour cette semaine précise ( Dim11/11, Lun 12/11, Mar13/11, Mer14/11, Jeu15/11, Vend 16/11 et Sam 17/11)
    Ce srait un code ds le genre de la pièce jointe mais ce code ne fonctionne pas à tous les coups, et je ne sais pas le modifier en conséquence!
    Mais je suis sur qu'il y a une fonction mathématique qui me permette de calculer cela



    est-ce + clair?

    Crd
    Fichiers attachés Fichiers attachés

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Je ne comprends pas ...

    Tu veux tous les jours de la semaine concernée ?
    Si tel est le cas, il te suffit d'ajouter une boucle de 0 à 7 pour ajouter 1 jour à la fois à la date obtenue comme exposé plus haut pour le 1er jour de la série.

    Pour le reste : en faire une fonction : il te suffit de lui passer en argument ton année et ta semaine et de lui faire retourner un tableau (ou une liste) de 7 valeurs...

    EDIT :

    En d'autres termes :

    une fonction reçoit des paramètres et retourne une ou des valeurs.

    Je n'ai pas du tout ouvert ton document xls...

    Je me contente ici de te poser la question suivante, à laquelle nous attendons une réponse précise et claire :
    Quels paramètres en entrée ?
    Quelle(s) valeurs en retour ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/12/2014, 17h15
  2. transformer date en numero de semaine et inversement avec Weekday
    Par Scopas dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/03/2009, 21h08
  3. [débutant] Date avec jours semaine
    Par moomba dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 17/04/2007, 16h36
  4. Réponses: 3
    Dernier message: 07/08/2006, 10h01
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14

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