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 :

Calcul de l'âge [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2009
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 276
    Par défaut Calcul de l'âge
    Bonjour,

    J'ai récupéré un code VBA pour déterminer l'âge d'une personne.
    Ce code date de 2009 et je n'arrive pas à joindre celui qui l'a écrit.

    Bref, le souci est qu'il y a un problème sur l'affichage des jours que je n'arrive pas à résoudre.
    Si je mets la date du 14 02 1980, le résultat qui s'affiche est : 34 ans et 3 mois et jours ==> les jours ne s'affichent pas !

    Je mets le fichier en PJ si quelqu'un peut m'éclairer
    Merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    bonjour,

    Essaie :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Function Calculage(DateN As String, DateCS As String) As String
        If IsDate(DateN) = False Then Exit Function
        If IsDate(DateCS) = False Then Exit Function
        Dim jN1, jC1, mN1, mC1, aN1, aC1 As Integer
        Dim Jage, Mage, Aage As Integer
        Dim Jdif As Integer
        jN1 = Day(DateN)
        jC1 = Day(DateCS)
        mN1 = Month(DateN)
        mC1 = Month(DateCS)
        aN1 = Year(DateN)
        aC1 = Year(DateCS)
        If aC1 < aN1 Then Exit Function
        If aC1 = aN1 And mC1 < mN1 Then Exit Function
        If aC1 = aN1 And mC1 = mN1 And jC1 < jN1 Then Exit Function
        If aC1 = aN1 And mC1 = mN1 And jC1 = jN1 Then
            Mage = 0
            Jage = 0
            Aage = 0
            GoTo caline1
        End If
        '
        ' Permet de savoir le nombre de jours du mois (fevrier inclus)
        Dim sdt1 As Date
        Dim sdt2 As Date
        sdt1 = DateValue("1" & "/" & mN1 & "/" & aN1)
        sdt2 = DateValue("1" & "/" & mN1 + 1 & "/" & aN1)
        Jdif = DateDiff("d", sdt1, sdt2)
        '
        '
        If jC1 < jN1 Then
            If mC1 > mN1 Then
                Mage = (mC1 - 1) - mN1
                'A vérifier :  Jage = (jC1 + Jdif) - jN1 +1
                Aage = aC1 - aN1
                Jage = (jC1 + Jdif) - jN1
                GoTo caline1
            End If
     
            If mC1 = mN1 Then
                Aage = aC1 - 1 - aN1
                Mage = (mC1 + 11) - mN1
                Jage = (jC1 + Jdif) - jN1
                GoTo caline1
            End If
     
            If mC1 < mN1 Then
                Mage = (mC1 + 11) - mN1
                Jage = (jC1 + Jdif) - jN1
                Aage = aC1 - 1 - aN1
                GoTo caline1
            End If
     
        End If
        If jC1 >= jN1 Then
            If mC1 > mN1 Then
                Jage = jC1 - jN1
                Mage = mC1 - mN1
                Aage = aC1 - aN1
                GoTo caline1
            End If
     
            If mC1 = mN1 Then
                Jage = jC1 - jN1
                Mage = mC1 - mN1
                Aage = aC1 - aN1
                GoTo caline1
            End If
     
            If mC1 < mN1 Then
                Jage = jC1 - jN1
                Mage = (mC1 + 12) - mN1
                Aage = aC1 - 1 - aN1
                GoTo caline1
            End If
        End If
    caline1:
        Calculage = Aage & " ans et " & Mage & " mois et " & Jage & " jours."
    End Function
    Maintenant que la fonction DATEDIF est débuggée (depuis Excel 2007) tu pourrais l'utiliser pour simplifier ton code.

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour;
    sans vba, voici une longue formule écrite par AV cette formule calcule l'âge exact d'après la date de naissance de la cellule D10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUPPRESPACE(SI(AUJOURDHUI()-D10;TEXTE(DATEDIF(D10;AUJOURDHUI();"y");"[>1]0"" ans"";[>]""1 an"";")&TEXTE(DATEDIF(D10;AUJOURDHUI();"ym");"[>] 0"" mois ""; ")&TEXTE(DATEDIF(D10;AUJOURDHUI();"md");"[>1]0"" jours"";[>]""1 jour"";");"0 jour"))
    Cordialement
    Abed_H

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2009
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 276
    Par défaut
    Bonjour Daniel et Abed,

    Merci pour vos réponses.
    Celle de Daniel est celle que j'attendais et elle fonctionne maintenant parfaitement : merci Daniel
    J'ai pu l'appliquer à mon UserForm.

    Merci également à Amed mais c'est du VBA que j'attendais.

    @+

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

Discussions similaires

  1. [TP7] Calculer sin, cos, tan, sqrt via le FPU
    Par zdra dans le forum Assembleur
    Réponses: 8
    Dernier message: 25/11/2002, 04h09
  2. 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
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35
  5. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45

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