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 :

Afficher une durée en minutes en jours/heures/minutes


Sujet :

Excel

  1. #1
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut Afficher une durée en minutes en jours/heures/minutes
    Bonjour,

    J'ai cette formule qui fonctionne

    Lorsque la valeur et 0 j'aimerais ne rien indiquer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT(((K8*5)+15)/480)&"jrs "& TEXTE(MOD(((K8*5)+15);480)/1440;"h\h m\m\n") &  " 1 poseur pour " &K8&" réglages"
    Actuellement : 0jrs 0h 45mn 1 poseur pour 6 poignées
    Après votre aide : 45mn 1 poseur pour 6 poignées

    Merci pour votre aide

    Philippe

  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
    12 755
    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 : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En intégrant chaque partie du texte dans un SI

    Exemple avec DATEDIF (en A6, la date de naissance et en A7 la date du jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(DATEDIF(A6;A7;"y");DATEDIF(A6;A7;"y") & " ans ";"") & SI(DATEDIF(A6;A7;"ym");DATEDIF(A6;A7;"ym") & " mois ";"") & DATEDIF(A6;A7;"md") & " jours "
    Si vous avez une version 365 d'excel, ce serait peut-être plus court avec les fonctions LAMBDA et/ou LET ou également en effectuant les différents calculs dans des cellules distinctes et en testant à l'aide de SI la présence d'une valeur différente de 0
    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 habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Merci pour les infos

    Je n'ai pas de date, mon calcul est une somme de plusieurs durées en minutes. Je désire afficher cette somme en jours/heures/minutes

    Je vous remercie

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    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 : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai bien vu que vous n'aviez pas de dates mais le problème est le même, il suffit de placer autant de fonction SI qu'il n'y a de texte à afficher.
    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

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour,

    attention la mise en forme que tu utilise est une mise en forme de date pas de durée. On traite donc une date au partir du 1/1/1900 0h0m0s : au dela de 31 jours tu auras un pb

    Essaye avec cette mise en forme (avec la même restriction d'usage) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =TEXTE(B3;"[>1]j"" jrs ""h"" h ""m"" mn"";[>0,04]h"" h ""m"" mn"";m"" mn""")
    ça se lit : si la cellule satisfait la condition entre crochets appliquer le format qui suit, sinon passer à ce qui est après le point virgule. Noter qu'on n'a droit qu'à 3 sections correspondant au remplacement des 3 sections std >0, <0, 0. Donc si on avait voulu descendre à la seconde il aurait fallu faire autrement.

  6. #6
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Ma formule fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT(((K8*5)+15)/480)&"jrs "& TEXTE(MOD(((K8*5)+15);480)/1440;"h\h m\m\n") &  " 1 poseur pour " &K8&" poignées"
    Lorsque la valeur et 0 j'aimerais ne rien indiquer

    Actuellement :
    0jrs 0h 45mn 1 poseur pour 6 poignées

    Après votre aide :
    45mn 1 poseur pour 6 poignées


    Merci pour votre aide

    Philippe

  7. #7
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    J'ai réussi à ne plus afficher les jrs à 0

    Pour les heures ça va être plus coton…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ENT(((C2*5)+15)/480)<1;TEXTE(MOD(((C2*5)+15);480)/1440;"h\h m\m\n"); ENT(((C2*5)+15)/480)&"jrs "& TEXTE(MOD(((C2*5)+15);480)/1440;"h\h m\m\n"))

  8. #8
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Voilà

    J'ai modifié ce code qui fonctionne enfin comme je veux

    Comment appeler ce code via une formule ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Range("A1") = Format_Minutes_jrs_h_mn(Range("C5"))
    End Sub
    Function Format_Minutes_jrs_h_mn(Valeur As Double) As String
    Dim Jour As Double
    Dim Heure As Double
    Dim Minute As Double
    Application.Volatile 'Recalcule automatiquement chaque fois qu'une modification ou un calcul est effectué dans une cellule quelconque du classeur
        Jour = Application.WorksheetFunction.RoundDown((Valeur / 480), 0) 'journée de 8h de travail 8*60min = 480
        Heure = Application.WorksheetFunction.RoundDown(((Valeur - (Jour * 480)) / 60), 0)
        Minute = Application.WorksheetFunction.RoundDown(((Valeur - (Jour * 480)) - (Heure * 60)), 0)
        Format_Minutes_jrs_h_mn = IIf(Jour > 0, Jour & "jrs ", "") & IIf(Heure > 0, Heure & "h ", "") & IIf(Minute > 0, Minute & "mn ", "")
    End Function

  9. #9
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Range("A1") = Format_Minutes_jrs_h_mn(Range("C5"))
    End Sub
    Function Format_Minutes_jrs_h_mn(Valeur As Double) As String
    Dim Jour As Double
    Dim Heure As Double
    Dim Minute As Double
    Application.Volatile 'Recalcule automatiquement chaque fois qu'une modification ou un calcul est effectué dans une cellule quelconque du classeur
        Jour = Application.WorksheetFunction.RoundDown((Valeur / 480), 0) 'journée de 8h de travail 8*60min = 480
        Heure = Application.WorksheetFunction.RoundDown(((Valeur - (Jour * 480)) / 60), 0)
        Minute = Application.WorksheetFunction.RoundDown(((Valeur - (Jour * 480)) - (Heure * 60)), 0)
        Format_Minutes_jrs_h_mn = IIf(Jour > 0, Jour & "jrs ", "") & IIf(Heure > 0, Heure & "h ", "") & IIf(Minute > 0, Minute & "mn ", "")
    End Function

  10. #10
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Je ne vois plus mes réponses

  11. #11
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Il y a 10 messages et je n'en vois que 7 celui-ci sera le 11ème mais je ne peux pas le voir incroyable

  12. #12
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour

    Tu as essayé ce que j'ai suggéré en #5 ?
    (si tu le vois )

  13. #13
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Bonjour

    Tu as essayé ce que j'ai suggéré en #5 ?
    (si tu le vois )
    Oui, mais ça ne fonctionne pas

  14. #14
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par goninph Voir le message
    Voilà

    J'ai modifié ce code qui fonctionne enfin comme je veux

    Comment appeler ce code via une formule ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Range("A1") = Format_Minutes_jrs_h_mn(Range("C5"))
    End Sub
    Function Format_Minutes_jrs_h_mn(Valeur As Double) As String
    Dim Jour As Double
    Dim Heure As Double
    Dim Minute As Double
    Application.Volatile 'Recalcule automatiquement chaque fois qu'une modification ou un calcul est effectué dans une cellule quelconque du classeur
        Jour = Application.WorksheetFunction.RoundDown((Valeur / 480), 0) 'journée de 8h de travail 8*60min = 480
        Heure = Application.WorksheetFunction.RoundDown(((Valeur - (Jour * 480)) / 60), 0)
        Minute = Application.WorksheetFunction.RoundDown(((Valeur - (Jour * 480)) - (Heure * 60)), 0)
        Format_Minutes_jrs_h_mn = IIf(Jour > 0, Jour & "jrs ", "") & IIf(Heure > 0, Heure & "h ", "") & IIf(Minute > 0, Minute & "mn ", "")
    End Function
    Personne ?

  15. #15
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Bonjour,

    Pas de problème pour ma part à utiliser votre fonction Format_Minutes_jrs_h_mn() ou celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function JHM(v As Double) As String
        Dim j As Integer, h As Integer, m As Integer
        Application.Volatile
        j = Int(v / 480)
        v = v - j * 480
        h = Int(v / 60)
        m = v - h * 60
        JHM = IIf(j > 0, j & "j ", "") & IIf(h > 0, h & "h ", "") & IIf(m > 0, m & "mn ", "")
    End Function
    Cordialement.
    Fichiers attachés Fichiers attachés

  16. #16
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Hello,
    plusieurs remarques concernant le code de EricDesign qui fonctionne très bien chez moi :
    1 - L'utilisation de Application.Volatile n'est pas nécessaire ici car les fonctions personnalisées ont en paramètre la valeur qui en changeant déclenche la fonction personnalisée. De plus en mettant Application.Volatile, la fonction sera appelée quelque soit ce qui change dans la feuille.
    2 - L'utilisation de formule matricielle ne s'impose pas ici car dès qu'on va changer une valeur dans la colonne des minutes, la fonction sera appelée pour chaque ligne de la formule matricielle. Avec une formule simple recopiée , la fonction n'est appelée que quand la ligne de la colonne minute correspondante est changée.
    Voici un test de performance entre les deux fonctions d'EricDgn en enlevant l'Application.Volatile et en n'utilisant pas de formules matricielles.

    Nom : FormatMinutes.gif
Affichages : 95
Taille : 153,4 Ko

    On voit que la fonction qui n'utilise pas Application.WorksheetFunction est plus performante.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  17. #17
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour,
    Tu as essayé ce que j'ai suggéré en #5 ?
    Oui, mais ça ne fonctionne pas
    Effectivement manquaient [] autour du m des minutes seules
    Nom : _Sans titre.png
Affichages : 86
Taille : 7,5 Ko

  18. #18
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 054
    Points : 2 517
    Points
    2 517
    Par défaut
    Bonjour

    pour éviter le 1 jours 0 h et 10 mn

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =TEXTE(ENT(A1);"[>1]0"" jours "";[>0]0"" jour "";")&TEXTE(ENT(MOD(A1;1)*24);"0"" h "";;")&TEXTE(ENT(MOD(A1;1/24)*24*60);"0"" mn"";;")
    ça gère le "s" à jour

    Nom : 2022_11_25 jour min.JPG
Affichages : 85
Taille : 42,7 Ko

  19. #19
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Je réponds aux discussions, car j'ai pu constater sur mon portable que plusieurs personnes ont répondus à mes interrogations, mais impossible de les lire sur mon pc, parce que je ne vois que les premiers e commentaires sur mon PC

    Incroyable

  20. #20
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Est-ce qu'un modérateur pourrait corriger ce problème ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher une durée au format jours et heures (-24h)
    Par Coucou17 dans le forum Excel
    Réponses: 9
    Dernier message: 07/07/2016, 08h00
  2. Convertir une durée en minute avec datetime.timedelta
    Par www.rubis dans le forum Général Python
    Réponses: 4
    Dernier message: 13/05/2016, 14h18
  3. [V6] Calcul d'une durée en année mois jours
    Par herve rennes dans le forum Deski
    Réponses: 7
    Dernier message: 11/02/2009, 23h37
  4. Afficher une durée dans un label
    Par Coluche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2008, 23h19
  5. Comment afficher une icone a côté de l'heure et savoir si on clique dessus ?
    Par wajdiisi2007 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/08/2007, 10h45

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