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 :

Numéro de semaine en vba [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut Numéro de semaine en vba
    Bonsoir,

    Comment mettre en place le code ci-dessous dans une feuille de calcul ?

    Par exemple mes dates seront en colonne C puis les numéros de semaine en colonne D.
    Ou placer ce code ?

    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
    Option Explicit
     
    Public Function Semaine(LaDate As Variant) As Variant
    '---------------------------------------------------------------------------------------
    ' Procedure : Semaine
    ' Date      : vendredi 21 décembre 2007 13:56
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    ' Objet     : Renvoie le numéro de la semaine pour le calendrier français
    ' Spec      : Cette fonctino empèche le débordement en semaine 53, en mettant les jours
    '               de la semaine 53 en semaine 1
    ' Retour    : Renvoie un Byte (n° de la semaine) ou Null si l'argument n'était pas une
    '               date
    '---------------------------------------------------------------------------------------
    '
        Dim bytTemp As Byte
        If IsDate(LaDate) Then
            bytTemp = CByte(DatePart("ww", LaDate, vbMonday, vbFirstFourDays)) Mod 53
            If bytTemp = 0 Then bytTemp = 1
            Semaine = bytTemp
        Else
            Semaine = Null
        End If
    End Function

    Merci d'avance
    Bonne soirée

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Le plus simple, c'est de mettre la macro dans un module de ton Classeur de macros personnelles (machin.xlsb); même si n'Importe quel classeur ouvert en même temps que le classeur actif fait l'affaire. L'avantage du classeur de macros c'est qu'il est ouvert automatiquement au lancement d'Excel et que ses macros deviennent donc utilisables dans tous les classeurs ouverts en même temps.

    Ensuite, tu mets la formule qui convient, disons en d1 :=semaine("c1"), et tu recopies vers le bas.

    Ta fonction VBA s'utilise comme une fonction intrinsèque d'Excel. Au pire, tu vas devoir ajouter le nom du classeur qui contient ta fonction.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Merci beaucoup,

    @ bientôt

  4. #4
    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, surtout qu'elle s'avère fausse. Par exemple le 28/12/2009 renvoie 1 alors que cela devrait être 53. L'auteur d'ailleurs le précise.

  5. #5
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Bonsoir Kiki29

    Oui, mais comment la rendre exact ?

    Bonne soirée.

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    La discussion est fermée depuis quelques années, mais une fonction qui prend en compte la norme ISO (la première semaine d'une année comporte toujours le premier jeudi de l'année civile) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Function NoSem(d As Date) As Long
    'L. Longre
       d = Int(d)
       NoSem = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
       NoSem = ((d - NoSem - 3 + (Weekday(NoSem) + 1) Mod 7)) \ 7 + 1
    End Function
    A+
    Benead

  7. #7
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Merci et bonne journée,

    @+

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

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 09h41
  2. [C#] Comment récupérer le numéro de semaine d'une date ?
    Par farfadet dans le forum Windows Forms
    Réponses: 9
    Dernier message: 17/07/2013, 16h33
  3. [VBA-E]Trouver le Numéro de semaine
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/05/2007, 15h27
  4. [Calendar] Problème de numéro de semaine de l'année
    Par gaia_dev dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 29/11/2004, 11h44
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

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