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 :

Récupérer le nombre de jours d'un mois ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut Récupérer le nombre de jours d'un mois ?
    Bonjour à tous,
    je souhaite récupérer le nombre de jours pour un mois et une année donnés et ajouter la date du 1er jour au dernier dans une feuille excel...

    Merci d'avance...
    Zeb'...

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Salut
    par formule de feuille
    si tu mets une date en A1
    en b1=FIN.MOIS(A1;0)-FIN.MOIS(A1;-1)
    pas besoin de VBA pour ça
    Daranc

  3. #3
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Merci de ta réponse, mais c'est dans un code VBA que j'ai besoin de cette chose-là

    En fait, il me faut absolument le dernier jour du mois quelque soit le mois et l'année donnés en paramètres.

    Je voulais faire une fonction renvoyant le nombre de jour d'un mois afin de pouvoir ensuite mettre en place une boucle

    (Ps : Je n'arrive pas à utiliser l'exemple que tu donnes en VBA ; je n'arrive pas à l'adapter en VBA...)
    Zeb'...

  4. #4
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Merci pour tout, mais j'ai fini par trouver.
    Voici la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WDernierJourDuMois = CDate("01/" & WMois & "/" & WAnnee)
    WDernierJourDuMois = DateAdd("d", -1, WDernierJourDuMois)
    WDernierJourDuMois = Day(WDernierJourDuMois)
    Voili, voilou...
    Zeb'...

  5. #5
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Salut en triant mes abonnements
    je pense qu'il y a une petite erreur sur la prmière ligne de ta formule pour le mois il faut +1 ( à moins que lors de la récupération tu ais déjà incrémenter Wmois)
    Daranc

  6. #6
    Membre du Club Avatar de lunart
    Homme Profil pro
    Administrateur système et réseau
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur système et réseau

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 63
    Points
    63
    Par défaut Pour ceux qui n'ont pas besoin de macro
    Vous pouvez aussi utiliser une formule plus simple si vous n'avez pas besoin de macro:

  7. #7
    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, pour info, une de plus parmi une myriade
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
     
    Function NB_JOURS(ddate As Date) As Long
        NB_JOURS = Day(DateSerial(Year(ddate), Month(ddate) + 1, 1) - 1)
    End Function

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        MsgBox NB_JOURS("25/08/2017")
    End Sub
    Function NB_JOURS(Ldate As Date) As Long
        NB_JOURS = Day(DateSerial(Year(Ldate), Month(Ldate) + 1, 0))
    End Function
    le jour 0 d'un mois c' est le dernier jour du mois précèdent
    je sais c'est rigolo
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Patrick
    le jour 0 d'un mois c' est le dernier jour du mois précèdent
    je sais c'est rigolo
    Rigolo, non. Tout simplement très logique, 0 étant égal à 1 - 1
    ainsi et toujours dans la même logique absolue de DateSerial :
    Day(DateSerial(Year(Ldate), Month(Ldate) + 1, -2))
    pour l'avant-veille du dernier jour du mois

    EDIT : bien la comprendre, cette logique --->>
    Elle n'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSerial(un_millésime, un_mois, un_jour)
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSerial(un_compteur_d'années, un_compteur_de_mois, un_compteur_de_jours)
    Pour être plus précis :
    - le "compteur_d'années" est tout simplement le nombre de jours écoulés depuis une origine jusqu'au dernier jour de l'année antérieure
    - le "compteur_de_mois" est tout simplement le nombre de jours écoulés depuis le 1er janvier de l'année
    - le compteur_de_jours est déjà en jours (il peut être négatif, positif, ou 0)
    Le résultat est l'addition des trois (la date interne, donc l'écart par rapport à l'origine)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 759
    Points : 28 611
    Points
    28 611
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La fonction VBA DateSerial renvoyant la même valeur que la fonction native d'excel DATE en fonction des arguments passés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());0)
    renverra le dernier jour du mois précédent et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;0)
    renverra le dernier jour du mois en cours.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Philippe
    Tout-à-fait ...
    En outre : relire la demande :
    je souhaite récupérer le nombre de jours pour un mois et une année donnés et ajouter la date du 1er jour au dernier dans une feuille excel...
    Elle aurait eu sa place dans la section Excel, avec une solution totalement Excel, de A à Z, pour tous les jours d'un mois d'une année.
    Mais comme (trop) souvent -->> l'impulsivité a régné après lecture en diagonale
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour à tous,

    Quel feu d'artifice pour le 10e anniversaire de cette question ! :-)
    eric

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

Discussions similaires

  1. [WD14] Récupérer le nombre de jours d'un un mois
    Par aurabarth dans le forum WinDev
    Réponses: 9
    Dernier message: 05/01/2012, 12h59
  2. Réponses: 4
    Dernier message: 06/02/2008, 13h37
  3. Fonction qui compte le nombre de jours ouvrés par mois
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/07/2006, 15h32
  4. [Dates] Calculer le nombre de jours dans le mois suivant...
    Par Life Hunter dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2006, 00h01
  5. [CR]nombre de jours dans un mois donné
    Par liberio dans le forum Formules
    Réponses: 2
    Dernier message: 20/04/2004, 16h54

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