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 l'âge à partir d'une date [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 15
    Par défaut Récupérer l'âge à partir d'une date
    Bonjour,

    Je dois effectuer un code VBA dans assez simple je pense mais je ne m'y retrouve pas du tout.

    J'ai un tableau excel dans lequel j'ai des dates de naissance en colonne E (sous forme jj/mm/aaaa). J'aimerais soit extraire l'année seule et la soustraire à l'année du jour pour obtenir l'âge, soit pouvoir convertir la date de naissance en âge.

    Ensuite, à partir de l'âge, mettre une structure conditionnelle en if... then "chaine de caractères" (ça, ça va)... et introduire cette chaine de caractères obtenue en colonne N du document excel (dans la ligne correspondant à la ligne de la date de naissance).

    Pour finir, il faut boucler de la ligne 2 à la ligne 21 pour faire tout le document.

    Une bonne âme saurait-elle me donner les éléments de départ?

  2. #2
    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 186
    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 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La fonction Excel qui permet de calculer l'âge d'une personne (sans VBA) est DateDif
    Exemple (A2 contient la date de naissance)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATEDIF(A2;AUJOURDHUI();"Y")
    La fonction VBA qui donne le même résultat est DateDiff
    Exemple avec MsgBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgbBox DateDiff("yyyy", Range("A2"), 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

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Quelque chose comme cela qui va chercher les dates de naissance en lignes 2 à 21 de la colonne E et inscrire l'âge en colonne N (mêmes lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub aa()
    Dim i&
    For i& = 2 To 21 'ligne 2 à ligne 21
      With Application.WorksheetFunction
       Range("N" & i&) = .RoundDown(.YearFrac(Now, Range("E" & i&)), 0)
      End With
    Next i&
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 15
    Par défaut Merci!
    Merci beaucoup!
    La formule est parfaite!
    J'ai utilisé une boucle en while avec un if à l'intérieur pour finir.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut DateDif VS DateDiff
    Bonjour,

    Les 2 fonctions ne sont pas tout à fait identiques, puisque DateDif calcule au jour près, contrairement à DateDiff qui considère que tout le monde a 1 an de plus dès que l'on passe du 31 décembre au 1er Janvier.

    Je n'ai pas trouvé de solution simple à ce problème, d'autant qu'on ne peut utiliser DateDif en VBA.

    Merci de votre aide.

    Catherine


    Citation Envoyé par PMO2017 Voir le message
    Bonjour,

    Quelque chose comme cela qui va chercher les dates de naissance en lignes 2 à 21 de la colonne E et inscrire l'âge en colonne N (mêmes lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub aa()
    Dim i&
    For i& = 2 To 21 'ligne 2 à ligne 21
      With Application.WorksheetFunction
       Range("N" & i&) = .RoundDown(.YearFrac(Now, Range("E" & i&)), 0)
      End With
    Next i&
    End Sub

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,
    Peut-être comme cela (???)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub bb()
    Dim Source As Range
    Set Source = ActiveSheet.Range("a7")
    [c7].Formula = "=DATEDIF(" & Source.Address & ",TODAY(),""Y"")"
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/04/2014, 17h59
  2. [XL-2003] Récupérer jour, mois et année à partir d'une date
    Par adamsmith dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/08/2009, 18h11
  3. Récupèrer l'heure à partir d'une date
    Par amine1980 dans le forum Débuter
    Réponses: 1
    Dernier message: 24/12/2008, 03h01
  4. Récupérer le nom du mois à partir d'une date.
    Par zooffy dans le forum ASP.NET
    Réponses: 10
    Dernier message: 04/03/2008, 15h48
  5. Récupérer le mois à partir d'une date
    Par dessinateurttuyen dans le forum Débuter
    Réponses: 5
    Dernier message: 01/03/2008, 13h10

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