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 :

Fonction Récupération Date [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 50
    Par défaut Fonction Récupération Date
    Bonjour,

    Pourriez-vous m'aider svp.
    Je souhaiterai une fonction qui me permette de récupérer une date ou de reconstruire la date avec:
    sJour = jour de la semaine de 1 à 7
    sNumSemaine = au numéro de semaine de 1 à 52 (voir 53)
    sAnnée = année (ex: 2013)

    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    à défaut de code, merci de nous montrer au moins l'analyse, comment le calculer manuellement ? …

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pas sur que ce soit ce que tu cherches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Test()
      Debug.Print (Format(CreationDate(2013, 9, 19), "dd/mm/yy"))
    End Sub
     
    Private Function CreationDate(Annee%, Mois%, Jour%) As Date
      CreationDate = CDate(Mois% & " " & Jour% & " " & Annee%)
    End Function

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour, test ça
    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
    Function ConverSemaineDate(sJour As Integer, sNumSemaine As Integer, sAnnée As Integer) As Date
    'Pourriez-vous m'aider svp.
    'Je souhaiterai une fonction qui me permette de récupérer une date ou de reconstruire la date avec:
    'sJour = jour de la semaine de 1 à 7
    'sNumSemaine = au numéro de semaine de 1 à 52 (voir 53)
    'sAnnée = année (ex: 2013)
     
    j = sNumSemaine * 7 'Je calcul le nombre de jour en fonction du dimanche de la semaine 1
    d = CDate("1/1/" & sAnnée) 'Je me positionne au 01/01/ de l'année
     
    Dim i As Integer
    i = 0
    'Je recherche le dimanche de la semaine 1
    While Weekday(CDate("1/1/" & sAnnée) - i) <> 1 Or CInt(Format(CDate("1/1/" & sAnnée) - i, "w")) <> 1
    DoEvents
    'Debug.Print Weekday(CDate("1/1/" & sAnnée) - i) & " : " & CInt(Format(CDate("1/1/" & sAnnée) - i, "w"))
    i = i + 1
    Wend
     
    d = CDate("1/1/" & sAnnée) - i 'Je fixe le dimanche de la semaine 1
    ConverSemaineDate = d + j - 7 + sJour 'J'ajoute  le nombre de jour pour trouver le dimanche de la semaine concerné, moins 7 jour plus la valeur du jour de la semaine.
    End Function
    Sub test()
    Debug.Print ConverSemaineDate(1, 42, 2013)
    Debug.Print ConverSemaineDate(1, 42, 2012)
    Debug.Print ConverSemaineDate(1, 42, 2011)
    Debug.Print ConverSemaineDate(1, 42, 2010)
    Debug.Print ConverSemaineDate(1, 42, 2009)
    Debug.Print ConverSemaineDate(1, 42, 2008)
    Debug.Print ConverSemaineDate(1, 42, 2007)
    End Sub
    Dernière modification par Invité ; 19/09/2013 à 13h02.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Cette fonction semble suffisante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Test()
      Debug.Print (Format(CreationDate(2011, 42, 1), "dd/mm/yyyy"))
    End Sub
     
    Private Function CreationDate(Annee%, Semaine%, Jour%) As Date
      CreationDate = 7 * Semaine% + CDate("3/1/" & Annee%) - Weekday(CDate("3/1/" & Annee%)) - 5 + Jour% - 1
    End Function

  6. #6
    Invité
    Invité(e)
    Par défaut elle semble marcher mieux
    je trouve 10/10/2011 pour 2011 ce qui est une erreur!
    Citation Envoyé par vcottineau Voir le message
    Cette fonction semble suffisante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Test()
      Debug.Print (Format(CreationDate(2011, 42, 1), "dd/mm/yyyy"))
    End Sub
     
    Private Function CreationDate(Annee%, Semaine%, Jour%) As Date
      CreationDate = 7 * Semaine% + CDate("3/1/" & Annee%) - Weekday(CDate("3/1/" & Annee%)) - 5 + Jour% - 1
    End Function
    Je me la garde en réserve

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

Discussions similaires

  1. Récupération date et heure
    Par Goldorak2 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/08/2009, 22h20
  2. Fonction récupération de Date de modification en T-SQL
    Par simo333 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/10/2007, 09h42
  3. Comment lancer une fonction à une date donnée
    Par ideal dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/02/2006, 12h52
  4. [CR]Aide sur les fonction de date et plage de date.
    Par Job dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/11/2005, 09h19
  5. fonction de date en Excel
    Par spopo dans le forum Excel
    Réponses: 11
    Dernier message: 11/08/2005, 13h36

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