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 :

Compléter Nouvelle formule avec Année, Mois & Jours [XL-2003]


Sujet :

Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 645
    Points : 141
    Points
    141
    Par défaut Compléter Nouvelle formule avec Année, Mois & Jours
    Bonjour le forum,
    Bon j'ai totalement revu ma stratégie!

    J'ai ouvert volontairement une autre discussion car j'avais noté Résolue

    Ancienne formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A3="";"";SI(LIGNE()=EQUIV(RECHERCHE(10000;$B$3:$B$3500);$B$1:$B$3500;0);SI(DATEDIF(A3;AUJOURDHUI();"Y")>0;DATEDIF(A3;AUJOURDHUI();"Y")&SI(DATEDIF(A3;AUJOURDHUI();"Y")>1;" ans ";" an ");"") & SI(DATEDIF(A3;AUJOURDHUI();"YM")>0;DATEDIF(A3;AUJOURDHUI();"YM")&" mois ";"") &DATEDIF(A3;AUJOURDHUI();"MD")&SI(DATEDIF(A3;AUJOURDHUI();"MD")>1;" jours";" jour");""))
    Nouvelle formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(B3<>"";NB(B:B)=NB($B$1:B4));AUJOURDHUI()-A3;"")
    Effectivement on peut taper le même nombre colonne B3 (pas besoin d'ajouter 001 Exemple : 3.400001) et ça fonctionne bien, mais comme résultat je veux le nombre de Années Mois & Jours

    Y aurait-il une "âme" charitable pour m'aider à compléter la nouvelle formule?
    Merci d'avance pour vos éventuels retours
    Bonne journée à tous
    Bien cordialement

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, sous forme de fonction personnalisée, en VBA
    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
    Option Explicit
     
    Function DiffDateAMJ(ByVal DateDebut As Date, ByVal DateFin As Date) As String
    Dim NbAns As Long, NbMois As Long, NbJours As Long
    Dim Tmp As Date
        Tmp = DateSerial(Year(DateFin), Month(DateDebut), Day(DateDebut))
        NbAns = Year(DateFin) - Year(DateDebut) + (Tmp > DateFin)
        NbMois = Month(DateFin) - Month(DateDebut) - (12 * (Tmp > DateFin))
        NbJours = Day(DateFin) - Day(DateDebut)
        If NbJours < 0 Then
            NbMois = NbMois - 1
            NbJours = Day(DateSerial(Year(DateFin), Month(DateFin), 0)) + NbJours
        End If
        DiffDateAMJ = NbAns & "a " & NbMois & "m " & NbJours & "j"
    End Function

  3. #3
    Membre habitué
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 645
    Points : 141
    Points
    141
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, sous forme de fonction personnalisée, en VBA
    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
    Option Explicit
     
    Function DiffDateAMJ(ByVal DateDebut As Date, ByVal DateFin As Date) As String
    Dim NbAns As Long, NbMois As Long, NbJours As Long
    Dim Tmp As Date
        Tmp = DateSerial(Year(DateFin), Month(DateDebut), Day(DateDebut))
        NbAns = Year(DateFin) - Year(DateDebut) + (Tmp > DateFin)
        NbMois = Month(DateFin) - Month(DateDebut) - (12 * (Tmp > DateFin))
        NbJours = Day(DateFin) - Day(DateDebut)
        If NbJours < 0 Then
            NbMois = NbMois - 1
            NbJours = Day(DateSerial(Year(DateFin), Month(DateFin), 0)) + NbJours
        End If
        DiffDateAMJ = NbAns & "a " & NbMois & "m " & NbJours & "j"
    End Function
    Bonjour kiki29,
    Je pense qu'il faut mettre le code dans la feuille mais le VBA et moi!!!
    Voici mon fichier qui vaudra mieux qu'un long discours mais on m'a dit que les fichiers sont plus ou moins ouverts sur le forum.
    Je le met quand même si tu peux l'adapter je serais très heureux car j'y bosse depuis....quelques jours!!!!
    Encore merci pour ton aide
    Bonne journée à toi
    Bien cordialement

    PS: Ligne A fusionnée (pas très bon ça!!!)

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si ton calcul en en C1

    Le nombre d'années en C2 :
    Le nombre de mois en C3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT((C1-C2*365,25)/30,5)
    Le nombre de jours en C4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT(C1-C2*365,25-C3*30,5)
    Mais, bien sûr, étant donné qu'un "mois" ou une "années" sont des notions dont la durée est variable (contrairement à celle d'une semaine), il ne peut s'agir que de résultats approximatifs.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, tu colles le code dans un module standard puis tu lis fonction personnalisée
    Images attachées Images attachées   

  6. #6
    Membre habitué
    Homme Profil pro
    Moi, je ne fais que passer, excusez le dérangement
    Inscrit en
    Mars 2013
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Moi, je ne fais que passer, excusez le dérangement

    Informations forums :
    Inscription : Mars 2013
    Messages : 645
    Points : 141
    Points
    141
    Par défaut
    Bonsoir kiki29 & Menhir,

    Ouf j'ai trouvé quelque chose qui fonctionne mais j'ai appris des choses grâce à vous deux.
    Surtout pour le détail de vos explications.
    Lorsqu'on a conçu le programme c'est plus facile surtout que là c'était un peu compliqué à expliqué sur un forum.

    Voilà ma formule qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(B3<>"";NB(B:B)=NB($B$1:B3));SI(DATEDIF(A3;AUJOURDHUI();"Y")>0;DATEDIF(A3;AUJOURDHUI();"Y")&SI(DATEDIF(A3;AUJOURDHUI();"Y")>1;" ans ";" an ");"")&SI(DATEDIF(A3;AUJOURDHUI();"YM")>0;DATEDIF(A3;AUJOURDHUI();"YM")&" mois ";"")&DATEDIF(A3;AUJOURDHUI();"MD")&SI(DATEDIF(A3;AUJOURDHUI();"MD")>1;" jours";" jour");"")
    C'était juste ce morceau de code qui était compliqué à trouver surtout pour moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(B3<>"";NB(B:B)=NB($B$1:B3))
    Je vous remercie encore.
    Bonne fin de soirée à vous deux
    Bien cordialement

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

Discussions similaires

  1. Convertir nombre de jours en année, mois et jours
    Par mehdiyou dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/04/2014, 10h08
  2. Comment calculer l'age en année mois et jours en vb6 avec dtpicker
    Par abfalog dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/05/2013, 22h39
  3. [A-07] Calendrier avec année/mois/jour/heure
    Par ikhor dans le forum IHM
    Réponses: 3
    Dernier message: 28/10/2008, 04h58
  4. Réponses: 7
    Dernier message: 18/06/2007, 16h40
  5. Réponses: 2
    Dernier message: 21/07/2006, 14h04

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