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 :

Probleme avec les dates


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut Probleme avec les dates
    Bonjour,

    je suis en train de créer un classeur excel pour mon activité d'indépendant avec un onglet "'Matrice" dans lequel je veux pouvoir rentrer des infos variables et a partir desquelles tous mes autres onglets (CRA, BUDGET, CA, CHARGES etc...) ventilés par Année, mois seront mis a jour.

    En l'occurrence, j'ai un probleme avec le calcul des dates.

    L'idée de départ est que je renseigne dans une cellule une année. A partir de laquelle je vais pouvoir calculer pour chaque mois de cette année:
    • le nombre de jour du mois
    • le nombre de jour ouvrés
    • les dates des jours fériés


    Pour ma cellule A1 il y l'année de départ et ma formule est
    =ANNEE(DATE(2012;1;1)) et format DATE

    Prob N°1 : j'obtiens 1905 dans ma cellule. Moi je veux 2012

    Pour cette année j'ai 12 cellules mois en B20 => B31 avec la formule :
    =MOIS(DATE(2012;1;1)) où je fais varier mon paramètre mois de la fonction DATE en fonction du mois où je suis bien sûr et ma cellule est au format personnalisé "m"

    Prob N°2 : j'obtiens 1 partout quelque soit le mois

    Pour ma cellule Nombre de jour la formule est :
    =JOUR(DATE(ANNEE($A1);MOIS(B20)+1;1)-1)
    Prob N°2 : je n'ai que du 31

    J'ai essayé diverses combinaison de formule de format de cellule mais y'a toujours un truc qui foire et là où je me suis le plus approché du bon résultat, c'est ma formule de calcul du nombre de jour qui ne fonctionne pas pour février dans le cas des années bisextiles et qui fait que je ne peux avoir confiance pour les autres mois même si ça semble bon.

    Est-ce que quelqu'un pourrait m'aider svp ? Je ne comprends pas où est l'erreur.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    J'ai un peu regardé. En attaché ton doc avec qq modif.

    Pour les deux premiers problèmes, j'ai changé le format de la cellule ->standard.

    Pour le nombre de jours du mois j'ai ajouté la formule suivante en ligne 25

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EOMONTH(B18;0)-(EOMONTH(B18;-1))
    Fichiers attachés Fichiers attachés

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La fonction FIN.MOIS(Cellule;0) ou dans sa version anglaise EOMONTH(cellule;0) proposée par QuestVBA a le désavantage de n'être présente que depuis la version 2007 tout au moins nativement puisqu'il est possible de l'obtenir en ajoutant la macro complémentaire Utilitaire d'analyse dans la version 2003.
    Une autre manière est de donner la valeur 0 au troisième argument de la fonction Date(Annee;mois;jour)
    Ainsi la formule =DATE(ANNEE($A1);MOIS(A1);0) donnera le dernier jour du mois qui précède la date contenue en A1
    Donc pour obtenir le dernier jour du mois en cours =DATE(ANNEE($A1);MOIS(A1)+1;0) et enfin pour avoir comme valeur le nombre de jour du mois en cours =JOUR(DATE(ANNEE($A1);MOIS(A1)+1;0)) sans oublier alors de mettre le format de la cellule en nombre et plus en date
    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

  4. #4
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    Merci pour ton aide.
    En effet c'est mieux mais en procédant ainsi, tu te confrontes à l'erreur que j'ai aussi rencontré dans mes essais différents à savoir que je souhaitais que mes mois soient dynamiques avec l'année.

    En gros rentrer la définition de mon année en B14 et que les mois soient ceux de l'année en B14 afin de ne pas avoir chaque année a changer en dur les années de mes mois.

    Or mes tentatives pour faire cela aboutissent à un planatge des calculs des nombres de jour.

    Une idée ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    Ok je viens de réessayer avec la formule proposée par Corona et c'est ok ca marche aussi en effet. Merci pour tout

    Mais alors je refomule mon poste précédent comment faire pour rendre les cellules qui définissent les mois dynamique en fonction de l'année (celles en B18:M18) dans l'exemple joins par QuestVBA et faire que cela fonctionne pour les autres calculs qui en dépendent ?

    J'ai essayé en mettant dans les cellules définissant les mois :
    - un nombre ==> KO
    - une formule =MOIS(B20+1) ==> KO a l'affichage (quel que soit le format) et au calcul du nomùbre de jour
    - une formule =MOIS(DATE($B14;1;1)) ==> OK à l'affichage mais KO au calcul du nombre de jour

    moi là j'en ai marre...

    En PJ mon dernier essai. Ca sembalit fonctionner mais quand j'ai modifié l'année 2012 en 2013, les calculs en ligne 26 ne changent pas toujours 28 jours à février.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    Oui alors ce que je n'ai pas précisé c'est que je veux pouvoir choisir mon année dynamiquement mais que une fois choisie 2012 par exemple, au 1er janvier 2013, je stocke mon doc et je n'y touche plus et si je le rouvre en 2023, elle sera toujours à 2012.

    Bon j'en ai marre je me paume dans ce foutu ficher et mes explications...

    Je veux une liste déroulante ou je choisi mon année. une fois choisi, elle bouge plus pour ce fichier et tous mes autres calculs sont dynamiques en fonction du choix de mon année. Et je n'ai que l'année à modifier et rien d'autres.

    Mon fichier comporte en fait de nombreux onglets avec des tas de formules, règles, conditions et autres complexes et tout fonctionne très bien SAUF ce ******* de calendrier de m**** avec sa formule simple que j'arrive pas à faire fonctrionner.

    Ca fait 4 jours que je suis sur cette simple problématique
    ras le bol

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une formule est par définition dynamique.
    Si tu tapes =AUJOURDHUI() dans 10 ans, si tu ouvres ton classeur, la cellule affichera la date du jour.
    Donc ce que tu souhaites ne peux pas être dynamique. Soit la date doit être encodée à la main soit par VBA.
    Oui alors ce que je n'ai pas précisé c'est que je veux pouvoir choisir mon année dynamiquement mais que une fois choisie 2012 par exemple, au 1er janvier 2013, je stocke mon doc et je n'y touche plus et si je le rouvre en 2023, elle sera toujours à 2012.
    Tu peux aussi faire une liste dynamique par Validation de données mais cela reste de l'encodage manuel.
    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

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Citation Envoyé par mederik Voir le message
    Merci pour ton aide.
    En effet c'est mieux mais en procédant ainsi, tu te confrontes à l'erreur que j'ai aussi rencontré dans mes essais différents à savoir que je souhaitais que mes mois soient dynamiques avec l'année.

    En gros rentrer la définition de mon année en B14 et que les mois soient ceux de l'année en B14 afin de ne pas avoir chaque année a changer en dur les années de mes mois.

    Or mes tentatives pour faire cela aboutissent à un planatge des calculs des nombres de jour.

    Une idée ?
    Et bien, si l'année est en A1 (2012) et le n° des mois de B1 à M1, comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =JOUR(DATE($A$1;B1+1;0))
    Bonjour,
    Citation Envoyé par mederik Voir le message
    Ok je viens de réessayer avec la formule proposée par Corona et c'est ok ca marche aussi en effet. Merci pour tout

    Mais alors je refomule mon poste précédent comment faire pour rendre les cellules qui définissent les mois dynamique en fonction de l'année (celles en B18:M18) dans l'exemple joins par QuestVBA et faire que cela fonctionne pour les autres calculs qui en dépendent ?

    J'ai essayé en mettant dans les cellules définissant les mois :
    - un nombre ==> KO
    - une formule =MOIS(B20+1) ==> KO a l'affichage (quel que soit le format) et au calcul du nomùbre de jour
    - une formule =MOIS(DATE($B14;1;1)) ==> OK à l'affichage mais KO au calcul du nombre de jour

    moi là j'en ai marre...
    Je travaille toujours en année dynamique. Le tout est de savoir comment tu veux le définir.
    En reprenant mon exemple du post précédent le n° des mois de B1:M1 mais l'année calculée dynamiquement. La fonction renvoie le nombre de jour par mois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =JOUR(DATE(ANNEE(AUJOURDHUI());B1+1;0))
    Après, tu peux tout imaginer.

    [EDIT]
    Attention, je viens de relire ton post. Ce n'est pas - une formule =MOIS(B20+1) mais =MOIS(B20) + 1
    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

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

Discussions similaires

  1. Probleme avec les dates
    Par guitariste dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/07/2007, 11h03
  2. [EJBQL] [EJB2] probleme avec les dates
    Par amine1980 dans le forum Java EE
    Réponses: 2
    Dernier message: 16/02/2007, 17h09
  3. [SQL Server 2000]Probleme avec les dates !
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2006, 15h58
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. Grop probleme avec les date
    Par stinger000 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/04/2006, 13h49

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