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

Excel Discussion :

Calculer l'âge avec critère [XL-2013]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Calculer l'âge avec critère
    Bonjour,

    Je souhaite calculer l'age d'une liste de personnes en distinguant les nourrissons des autres.

    J'utilise la formule suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(DATEDIF(B2;A2;"y")<2;SI(DATEDIF(B2;A2;"m")<1;DATEDIF(B2;A2;"d")&" jours";DATEDIF(B2;A2;"m")&" mois");DATEDIF(B2;A2;"y")&" ans")
    J'ai l'impression que cette formule rend mon fichier volumineux, surtout que le nombre de lignes peut atteindre 100 000.

    Je souhaite savoir s'il y a une possibilité de le faire autrement (Vba par exemple).

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par khroujou Voir le message
    Bonjour,

    Le code ci-dessous met en place la formule sur la colonne C et ne conserve que la valeur.
    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
     
    Sub TestCalculDeLAge()
     
    Dim HeureDebut2, HeureFin2, TempsTotal2
     
        HeureDebut2 = Timer
     
        CalculDeLAge 3
     
        HeureFin2 = Timer
        TempsTotal2 = HeureFin2 - HeureDebut2
     
        MsgBox "Temps total du traitement : " & Round(TempsTotal2, 2) & " seconde(s)", vbInformation, "Calcul de l'âge"
     
     
    End Sub
     
    Sub CalculDeLAge(ByVal ColonneAge As Long)
     
    Dim DerniereLigne As Long
     
     
        With ActiveSheet
     
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
     
             Application.Calculation = xlCalculationManual
             With .Range(.Cells(2, ColonneAge), .Cells(DerniereLigne, ColonneAge))
                  .Formula = "=IF(DATEDIF(B2,A2,""y"")<2,IF(DATEDIF(B2,A2,""m"")<1,DATEDIF(B2,A2,""d"")&"" jours"",DATEDIF(B2,A2,""m"")&"" mois""),DATEDIF(B2,A2,""y"")&"" ans"")"
             End With
             Application.Calculation = xlCalculationAutomatic
             DoEvents
     
             With .Range(.Cells(2, ColonneAge), .Cells(DerniereLigne, ColonneAge))
                  .Copy
                  .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
             End With
     
        End With
     
    End Sub

  3. #3
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 416
    Points : 2 879
    Points
    2 879
    Par défaut
    Bonjour

    Ce n'est pas cette formule qui rends le fichier volumineux. C'est le fait de faire une formule sur un si grand nombre de lignes.
    Plutôt que de faire du VBA, si le fichier ne doit pas changer souvent, je ferai plutôt la formule indiquée, puis je ferai un copier-coller valeur afin de ne garder que les résultats. Mais la taille du fichier ne changera pas beaucoup.
    D'ailleurs, ce sera le cas pour du VBA aussi.

    En espérant que cela aide.

    Bonne journée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Merci Pierre, Merci Eric.

    Je pense que je vais coller les valeurs en gardant la formule quelques parts pour les nouvelles données.

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

Discussions similaires

  1. [AC-2013] Calcul de rang avec critère
    Par meriem.alaooui dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/10/2019, 23h36
  2. [Google Sheets] Calcul de moyenne avec critère
    Par Exideus dans le forum APIs Google
    Réponses: 1
    Dernier message: 03/05/2019, 13h33
  3. [AC-2010] Calculer un rang avec des critères
    Par josephadam dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 01/12/2013, 22h12
  4. [XL-2010] Calcul de la mediane avec critères
    Par Philippe76 dans le forum Excel
    Réponses: 2
    Dernier message: 15/02/2013, 10h55
  5. Calcul du temps écoulé avec critères spécifiques
    Par kedmard dans le forum VBA Access
    Réponses: 8
    Dernier message: 08/06/2012, 14h49

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