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

VBA Access Discussion :

code VBA pour calculer le nombre d'année entre 2 dates à partir d'une date donnée [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut code VBA pour calculer le nombre d'année entre 2 dates à partir d'une date donnée
    Bonjour

    Pas facile de décrire l'intitulé...

    en fait, j'ai besoin d'aide pour trouver au moins des idées pour calculer le nombre d'années séparant 2 dates, mais à partir d'une année donnée.
    Je m'explique :

    J'ai la date d'entrée d'une personne dans l'entreprise. pour connaître son ancienneté, c'est facile : maintenant()-[date entree] : OK
    Mais il me faudrait connaître le nombre d'années entre 2015 et aujourd'hui, en tenant compte des jours et mois de chacune des dates... suis-je clair ?

    Un exemple : La personne est entrée le 12/01/1994. à la date d'aujourd'hui, cela fait 3 ans d'ancienneté depuis 2015
    par contre, si elle est entrée le 12/05/1994, elle n'aura à aujourd'hui que 2 ans d'ancienneté...

    Merci de votre aide

    Sylvain

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Bonjour.

    La fonction DateDiff va faire cela pour toi.

    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateDiff("y", DateEntree, Date())
    Attention Acces compte en "interval" entier (ici l'année) donc tu auras 1, 2, 3 mais pas 1.5.
    Si tu as besoin de plus de précision, tu voudras peut-être calculer en mois et diviser par 12.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateDiff("m", DateEntree, Date())/12
    En jours cela va être pénible à cause des années bisextiles.
    Dans ce cas, faire une boucle en VBA entre la date début et la date de fin et de compter toi-même les années est sans doute la solution la plus simple.

    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut code VBA pour calculer le nombre d'année entre 2 dates à partir d'une date donnée
    Merci de ton aide

    Mais ça ne fonctionne pas, erreur de syntaxe - Mais ça, j'en fait mon affaire...
    Non, là où ça ne colle pas, c'est que cette formule VBA va calculer le nombre de jour entre la date d'entrée et la date du jour(soit l'ancienneté).
    Mais il me faut l'ancienneté à compter de l'année 2015

    ou alors, il faut trouver le moyen de transformer la date d'entrée (12/01/1994) en 2015 (12/01/2015) - et je pourrai alors faire le DateDiff...

    Merci encore, je cherche de mon côté

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Donc tu veux calculer une ancienneté à partir de 2015, mais avec les jour et mois d'entrée.
    Voici un code d'essai dont tu peux t'inspirer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub années()
        Dim DateEntrée As Date
        DateEntrée = "12/5/1994"
        MsgBox Int(DateDiff("d", Day(DateEntrée) & "/" & Month(DateEntrée) & "/2015", Date) / 365)
    End Sub
    Titi95

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut code VBA pour calculer le nombre d'année entre 2 dates à partir d'une date do
    Oui, c'est bien ça, l'ancienneté depuis 2015

    Pour le code, je n'y connais rien...
    Je continue à chercher...

    Merci encore

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Réalise des essais avec mon code.

    Fait un copier-coller complet dans un Module et exécute le.
    Change la date plusieurs fois.

    La formule de calcul à retenir est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Int(DateDiff("d", Day(DateEntrée) & "/" & Month(DateEntrée) & "/2015", Date) / 365)
    Ensuite à toi de l'intégrer où tu le souhaites dans ta base.

    Titi95

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut Calculer le nombre d'année entre 2 dates à partir d'une date donnée
    J'y suis presque avec ce code et grâce à toi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Année(Date()-CDate(Jour([Date entrée CAT]) & "/" & Mois([Date entrée CAT]) & "/2015"))

    Sauf que le résultat est 1902 - pour une réponse qui devrait être 2...ou 02

    Je pourrais ajouter à la formule "-1900"... mais ce n'est pas très propre...

    à suivre...

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Bonjour.

    Je pense que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DateDiff("a"; DateSerial(2015; Month([Date entrée CAT]); Day([Date entrée CAT]))
    Va te donner le résulat voulu.
    Le DateSerial te permet de créer directement une date sans passer par une conversion de chaîne de caractère.
    Et si tu es dans une requête, Access va traduire le nom des fonctions en français pour toi.

    si tu es dans du VBA ou du SQL il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DateDiff("y", DateSerial(2015, Month([Date entrée CAT]), Day([Date entrée CAT]))
    A+

  9. #9
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Avec un peu de retard...

    Désolé Marot, mais tes codes comportent qq oublis... et bloquent.
    Par contre, merci pour SerieDate que je ne connaissais pas, mais cela revient au même.

    Donc, papagei2

    1 Si tu es en VBA tu peux reprendre mon code précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Int(DateDiff("d", Day(Date Entrée CAT) & "/" & Month(Date Entrée CAT) & "/2015", Date) / 365)
    2 Par contre, si tu es dans une Source de données d'une Zone de texte de formulaire, ou dans une requête (mode colonnes, pas SQL) il faut employer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Int(DiffDate("a";SérieDate(2015;Mois([Date entrée CAT]);Jour([Date entrée CAT]));Date())/365)
    Le principe de la formule est le même, mais pas la syntaxe !

    Un petit conseil au passage : évite les espaces, caractères particuliers (hormis '_') dans les noms de champs, variables, fichiers... Cela peu parfois être bloquant
    Exemple : Date entrée CAT >>> DateEntréeCAT

    Titi95

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut code VBA pour calculer le nombre d'année entre 2 dates à partir d'une date donnée
    Merci

    C'est effectivement pour mettre dans un champ de formulaire.
    la seconde formule fonctionne très bien.

    Merci beaucoup de votre aide

    Sylvain

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 73
    Points
    73
    Par défaut https://www.franceinter.fr/economie/diffusion-tele-tf1-contre-le-reste-du-monde
    C'est encore moi...

    En ce que j'attendais était beaucoup plus simple que ça...
    Je me suis planté dans l'objectif à atteindre... trop facile...

    Le code attendu était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([Date entrée CAT]>#01/01/2015#;Int(DiffDate("a";[Date entrée CAT];Date())/365);0)
    Bah oui, puisque la référence était 2015, il suffisait de filtrer celles étant supérieures à 2015, et de calculer l'écart en année entre 01/01/2015 et aujourd’hui...

    Désolé pour le temps perdu, mais merci pour les nouvelles formules et nouveaux codes que j'ai appris.

    Amicalement

    Sylvain

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 371
    Points : 23 845
    Points
    23 845
    Par défaut
    Bonjour.

    Diviser par 365 ne tient pas compte des années bisextiles.
    Si tu veux un calcul plus proche, il faut diviser par 365.25.

    A+

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

Discussions similaires

  1. [XL-2007] code vba pour calcul taille mémoire virtuelle et profil windows
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/03/2013, 16h02
  2. [XL-2007] problème dans un code VBA pour determiner le nombre de valeur
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/05/2011, 20h50
  3. [XL-2007] Définir une date à partir d'une date +nombre de jour
    Par Florent7 dans le forum Excel
    Réponses: 1
    Dernier message: 13/10/2010, 16h48
  4. [Débutant] Calcul d'une date à partir d'une date de départ et d'une durée
    Par Marmotton76 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/04/2007, 11h39
  5. Code VBA pour calcul compte client > ou < à 100- Urgent
    Par mabeatrice@yahoo.fr dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/03/2007, 17h39

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