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 :

Déterminer si la date d'aujourd'hui fait partie du week-end 1 à 5 du mois en cours.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Octobre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 45
    Par défaut Déterminer si la date d'aujourd'hui fait partie du week-end 1 à 5 du mois en cours.
    Bonjour les ami(e)s,

    j'ai un petit problème, car je n'ai aucune idée de comment programmer en VBA excel 2019,

    je dois comparer si la fonction :
    aujourd'hui() ou la commande VBA correspondante

    fait partie du week-end 1 à 5 par rapport au mois et à l'année en cours



    Ensuite, suivant différents cas possibles, si :

    1) la date d'aujourd'hui fait partie du week-end 1 du mois :
    Faire action 1

    2) la date d'aujourd'hui fait partie du week-end 2 du mois :
    Faire action 2

    3) la date d'aujourd'hui fait partie du week-end 3 du mois :
    Faire action 3

    4) la date d'aujourd'hui fait partie du week-end 4 du mois :
    Faire action 4

    5) cas exeptionnel : la date d'aujourd'hui fait partie du week-end 5 du mois :
    Faire action 5

    6) si la date d'aujourd'hui ne fait pas partie d'un week-end du mois en cours, finir la macro



    Quelqu'un aurait il une idée s'il vous plait ? (Par avance merci et passez une agréable journée)
    David

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Bonjour,

    La fonction weekday (https://docs.microsoft.com/fr-fr/off...ekday-function) peut te permettre de savoir quel jour de la semaine on est, tu pourras déjà facilement savoir si on est le weekend ou non

    Ensuite le quotient de la division du numéro de jour par 7 te permettra de savoir quel weekend on est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=QUOTIENT(DAY(TODAY()),7)+1"

    Edit: question quand un weekend est à cheval sur deux mois, tu le compte comment ?
    par exemple le 30/11/2019 est un samedi et le 01/12/2019 un dimanche
    Le samedi 07/12/2019 tu le compte comme étant le premier weekend ou le second ? Même question pour le dimanche 08/12/2019 ?
    Note que la formule que je te propose répondra que c'est le second weekend

  3. #3
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Octobre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 45
    Par défaut
    Tout d'abord merci pour ta réponse,
    mais ca ne marche pas Alaster

    Aurais tu un code associé que je pourrai tester s'il te plait ?
    Par avance merci

    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    La fonction weekday (https://docs.microsoft.com/fr-fr/off...ekday-function) peut te permettre de savoir quel jour de la semaine on est, tu pourras déjà facilement savoir si on est le weekend ou non

    Ensuite le quotient de la division du numéro de jour par 7 te permettra de savoir quel weekend on est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=QUOTIENT(DAY(TODAY()),7)+1"

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Citation Envoyé par Barba Voir le message
    mais ca ne marche pas
    Qu'est-ce qui ne marche pas ?
    Si tu ne montre pas le code que tu as essayé, il va être difficile de t'aider

  5. #5
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Octobre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 45
    Par défaut
    je l'ai marqué dans le titre c'est pour cela

    j'ai un petit problème, car je n'ai aucune idée de comment programmer en VBA excel 2019,

    j'ai essayé ce que tu m'as écrit mais ca ne marche pas Halaster, désolé si je suis novice, excuse moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=QUOTIENT(DAY(TODAY()),7)+1"

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Citation Envoyé par Barba Voir le message
    j'ai un petit problème, car je n'ai aucune idée de comment programmer en VBA excel 2019,
    Un petit extrait des règles du forum:
    Nous ne sommes pas là pour faire vos exercices.
    Entendez par là que nous serons bien évidemment tout à fait d'accord pour vous aider à résoudre votre problème, pour autant que vous fassiez vous-même des efforts.
    Postez votre question, mais proposez également un début de solution, un bout de code, etc. En aucun cas, nous ne ferons le travail à votre place.

    Merci de votre compréhension.
    http://club.developpez.com/regles/#LIV-N

    Si tu cherches quelqu'un pour faire ton travail à ta place désolé ce ne sera pas moi.

    A partir des éléments que je t'ai donné, avec un minimum de travail tu pourras obtenir ce que tu cherches.

  7. #7
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par Barba Voir le message
    je dois comparer si la fonction aujourd'hui() fait partie du week-end 1 à 5 par rapport au mois et à l'année en cours
    Avec cette petite fonction personnalisée à mettre dans un module, tu devrais obtenir ton numéro du week-end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function no_week(jour As Date) As Integer
    Dim bon As Boolean
        Select Case Weekday(jour)
            Case 1
                If Month(jour) = Month(jour - 1) Then bon = True
            Case 7
                If Month(jour) = Month(jour + 1) Then bon = True
            Case Else
        End Select
        no_week = IIf(bon, Int((jour - DateSerial(Year(jour), Month(jour), 1)) / 7) + 1, 0)
    End Function
    Tu peux l'utiliser dans la feuille avec ou en VBA avec

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Citation Envoyé par anasecu Voir le message
    no_week = IIf(bon, Int((jour - DateSerial(Year(jour), Month(jour), 1)) / 7) + 1, 0)
    Attention, avec ta formule le samedi 7/12 sera compté comme étant le premier weekend, et le dimanche 8/12 sera lui compté comme étant le second weekend.

  9. #9
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par halaster08 Voir le message
    Attention, avec ta formule...
    Tu as raison, j'avais été un peu vite mais notre ami Barba a l'air de s'être absenté.
    Je rectifie la fonction personnalisée :
    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
    Public Function no_week(jour As Date) As Integer
    Dim dec As Integer, dfm As Date
        dec = IIf(Weekday(jour) = 1, -1, 1)
        dfm = DateSerial(Year(jour), Month(jour), 0)
         Select Case Weekday(jour)
            Case 2 To 6     ' jours de semaine
                no_week = 0
            Case 1, 7       ' 1 dimanche / 7 samedi
                If Month(jour) <> Month(jour + dec) Then
                    no_week = 1 ' le week end ne compte que s'il est entièrement fini
                Else            ' week-end compris dans le mois
                    no_week = Int((jour - dfm + Weekday(dfm)) / 7)
                End If
        End Select
    End Function
    Une façon de l'utiliser selon la demande :
    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
    Public Sub test()
         Select Case no_week(Date)
            Case 1
    '                1) la date d'aujourd'hui fait partie du week-end 1 du mois :
    '                Faire action 1
            Case 2
    '                2) la date d'aujourd'hui fait partie du week-end 2 du mois :
    '                Faire action 2
            Case 3
    '                3) la date d'aujourd'hui fait partie du week-end 3 du mois :
    '                Faire action 3
            Case 4
    '                4) la date d'aujourd'hui fait partie du week-end 4 du mois :
    '                Faire action 4
            Case 5
    '                5) cas exeptionnel : la date d'aujourd'hui fait partie du week-end 5 du mois :
    '                Faire action 5
            Case 0
    '                6) si la date d'aujourd'hui ne fait pas partie d'un week-end du mois en cours, finir la macro
        End Select
    End Sub

Discussions similaires

  1. initialiser un champ à la date d aujourd hui
    Par Methode dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/05/2007, 13h11
  2. Date d'aujourd'hui par défaut
    Par MorganStern dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 23/02/2007, 12h25
  3. Réponses: 3
    Dernier message: 11/11/2006, 07h14
  4. Durée depuis une certaine date jusqu'à aujourd'hui
    Par kirouha dans le forum Access
    Réponses: 5
    Dernier message: 13/07/2006, 10h07
  5. Ouvrir un Form sur la date d'aujourd'hui
    Par Technicien dans le forum Access
    Réponses: 3
    Dernier message: 04/07/2006, 19h17

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