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 :

[vbexcel]aide sur numéro de semaine


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Par défaut [vbexcel]aide sur numéro de semaine
    je voudrais calculer le numero de semain en fonction d'une date, est-ce possible ? Sachant que je veux pas le faire directement dans excel avec la formule --> =NO.SEMAINE(I454)-1 (par exemple) mais par le code VB.

  2. #2
    Membre confirmé Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Par défaut
    Pour ceux que ç a intéresse j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Dim NumSem As Integer
     
    NumSem = Val(Format$(Votre Date, "ww"))
    Salut les gens

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Pour ceux que ça intéresse, je me suis amusé à réécrire (surement moins bien que la solution de Mugette, mais bon) une fonction qui fait la même chose, histoire de me mettre en appétit avant de partir déjeuner:
    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
     
    Function numeroSemaine(ByVal DateDuJour As Date)
     
        Dim DateDebut As Date
        Dim NbJour As Integer
     
        'Recherche du premier lundi de l'année, qui commence la semaine 1
        DateDebut = DateSerial(Year(DateDuJour), 1, 1)
        While Weekday(DateDebut) <> 2
            DateDebut = DateAdd("d", 1, DateDebut)
        Wend
     
        NbJour = DateDiff("d", DateDebut, DateDuJour)
     
        numeroSemaine = Int(NbJour / 7) + 1
     
    End Function
     
    Sub test()
        Dim MaDate As Date
        MaDate = DateSerial(2005, 1, 16)
        MsgBox ("Numero de semaine : " & numeroSemaine(MaDate))
     
    End Sub
    Et j'ai l'impression qu'elle marche, en plus...

  4. #4
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par Megaxel
    Pour ceux que ça intéresse, je me suis amusé à réécrire (surement moins bien que la solution de Mugette, mais bon) une fonction qui fait la même chose, histoire de me mettre en appétit avant de partir déjeuner:
    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
     
    Function numeroSemaine(ByVal DateDuJour As Date)
     
        Dim DateDebut As Date
        Dim NbJour As Integer
     
        'Recherche du premier lundi de l'année, qui commence la semaine 1
        DateDebut = DateSerial(Year(DateDuJour), 1, 1)
        While Weekday(DateDebut) <> 2
            DateDebut = DateAdd("d", 1, DateDebut)
        Wend
     
        NbJour = DateDiff("d", DateDebut, DateDuJour)
     
        numeroSemaine = Int(NbJour / 7) + 1
     
    End Function
     
    Sub test()
        Dim MaDate As Date
        MaDate = DateSerial(2005, 1, 16)
        MsgBox ("Numero de semaine : " & numeroSemaine(MaDate))
     
    End Sub
    Et j'ai l'impression qu'elle marche, en plus...
    Franchement, t'aurais pas plus compliqué ???

    Pour toi, j'ai une maxime parfaite :
    Pourquoi faire simple quand on peut faire compliqué ?


    Théo

  5. #5
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    C'est bizarre, ta solution, Mugette...
    Si je la teste sur le 16 janvier 2005, elle me répond "semaine 4"...
    Hummm.
    Remarque, je ne sais pas si la semaine 1 commence au premier lundi de l'année, comme je l'ai codé, ou au dernier lundi de l'année précédente...

  6. #6
    Membre Expert
    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
    Par défaut
    Bonjour,

    Si ça peut aider ?

    '******************************************************************
    ' Calcul des dates d'une année par numéro de semaine
    '
    ' 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).
    '******************************************************************

  7. #7
    Membre confirmé Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Par défaut
    oui exacte Megaxel je me suis planté on dois faire -1 sur ma formule... mais j'optimise le code quand même par rapport à toi...lol

    Merci de vous êtes penché sur le problème.

    A la prochaine.

    Bon ap megaxel...

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    C'est vrai qu'en ce moment, je me lache pas mal sur le code. Je fais des gammes, en quelque sorte...
    Mais sinon, j'ai quand même une remarque, Mugette. Si on reprend le cas du 16 janvier 2005, qui se trouve en semaine 2, ta formule, en y ajoutant le -1, le place en semaine 3 ...
    Alors.... Hmmmmm....

  9. #9
    Membre confirmé Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Par défaut
    sachant que le 1 est un samedi, ma formule donne donc la semaine 3 pour le 16 janvier sachant que la semaine va du lundi au dimanche, non??

  10. #10
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Oui, le 1er janvier est un samedi, donc, avec la règle du jeudi qui détermine la semaine 1 donnée par PC75:
    Semaine 1:
    du lundi 3 janvier au dimanche 9 janvier
    Semaine 2:
    du lundi 10 janvier au dimanche 16 janvier

    Dans ta solution, la semaine commence au dimanche. Attention...



  11. #11
    Membre confirmé Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Par défaut
    en fait, dans l'application que je fais de cette formule ça marche nickel, donc je vais suivre MA règle n°1 : ne pas changer quelque chose qui marche.
    Mais je regarderais plus précisement à l'occasion.

  12. #12
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ok. C'est vrai qu'on regarde rarement le numéro de la semaine pour un dimanche, et c'est le seul cas où tu risques une erreur. Tu as raison, ce code en 1 seule ligne marche très bien, garde le.

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

Discussions similaires

  1. [AC-2007] Afficher le Numéro de Semaine sur un état est-ce possible ?
    Par Debutant10 dans le forum IHM
    Réponses: 1
    Dernier message: 30/01/2012, 03h45
  2. [AC-97] Récupérer le numéro de semaine sur le contrôle d'un état
    Par Milyshyn76 dans le forum IHM
    Réponses: 2
    Dernier message: 15/10/2010, 11h44
  3. [AC-2003] Récupérer le numéro de semaine sur une date
    Par Snow06 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/09/2010, 16h18
  4. Faire des calculs sur le numéro de semaine ISO
    Par Fiona08 dans le forum SQL
    Réponses: 13
    Dernier message: 20/10/2008, 11h28

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