none
calculer la durée totale via macro Excel vba 2013 RRS feed

  • Question

  • bonjour le forum !

    un petit souci dans le calcul de totalisation de durées (saisies sous forme de nombre) via VBA

    j'ai besoin de faire un total en haut de colonne, car je ne sais pas à l'avance le nombre de lignes à calculer :

    il peut y avoir 5 lignes comme il peut en avoir 75

    donc je souhaite mettre une formule qui englobe jusqu'à 100 lignes par exemple

    j'ai fait un test (voir le fichier joint avec tout le détail et la macro) mais le résultat est des plus surprenant

    http://cjoint.com/?CLqq1n3ucmo

    je ne comprends pas du tout ce qu'il se passe ?

    merci pour votre aide


    FiDSDF

    lundi 16 décembre 2013 15:55

Réponses

  • Bonjour MehdiH,

    pour répondre à votre dernier message, effectivement si on saisit les durées au format 00:00:00 on obtient le bon résultat.

    pour nos besoins, il est beaucoup plus simple de saisir la durée "minute, seconde" comme un nombre

    1 minute 25 secondes : 1,25

    je joins le fichier qui permet ce calcul via une macro et qui donne le résultat dans une MsgBox :

    http://cjoint.com/?CLskOGbQKJZ

    merci à MichD pour le code

    j'espère que cela pourra être utile à d'autres utilisateurs

    bonne journée et merci pour votre aide


    FiDSDF

    • Marqué comme réponse FiDSDF mercredi 18 décembre 2013 09:41
    mercredi 18 décembre 2013 09:41
  • Bonjour FiDSDF,

    Juste au passage, avez-vous testé le code que je vous ai proposé ?

    Il suffit de le remplacer le code de votre macro par celui-ci dessus et il s'utilise dans le cas ou les durées sont présentées comme vous le proposé mm,ss.

    Cordialement,


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    • Marqué comme réponse FiDSDF mercredi 18 décembre 2013 12:34
    mercredi 18 décembre 2013 10:25

Toutes les réponses

  • Bonjour FiDSDF,

    en parcourant le code que vous avez proposé, il semble y avoir une erreur dans l'écriture de votre formule:

    Je vois en b20: somme(ent(B2:B19)) au lieu de ent(somme(b2:b19)) ...

    ce qui équivaut côté code : =SUM(INT(RC[-1]:R[17]C[-1])) au lieu de =INT(SUM(RC[-1]:R[17]C[-1]))

    L'erreur est répétée toirs fois.

    Cordialement,


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    mardi 17 décembre 2013 10:22
  • bonjour MehdiH

    merci pour ta réponse

    j'ai testé ta formule, mais le résultat est faux

    si tu appliques ta formule en lieu et place de l'autre et si tu mets les valeurs suivantes comme exemple :

    0,35
    1,25
    0,35
    0,45
    1,25
    0,35
    on obtient alors un total de 5 minutes et 20 secondes avec la formule initiale et 4 minutes avec la tienne ?

    je précise que les chiffres entrés sont en minutes et secondes et non en centièmes

    A+


    FiDSDF

    mardi 17 décembre 2013 13:15
  • Bonjour,

    Après plusieurs tentatives, j'ai compris que vous utilisiez une formule matricielle et la solution à votre problème est la suivante :

    Range("C2").Select
    Selection.FormulaArray = _
        "=SUM(INT(R2C2:R19C2))+INT((SUM(R2C2:R19C2)-SUM(INT(R2C2:R19C2)))*100/60)+((SUM(R2C2:R19C2)-SUM(INT(R2C2:R19C2)))*100/60-INT((SUM(R2C2:R19C2)-SUM(INT(R2C2:R19C2)))*100/60))*60/100"
    Range("C3").Select

    Juste pour info,

    En saisissant vos durée correctement 00:00:36 pour 36 secondes et 00:01:15 pour une 01 minute et 15 secondes et enfin 01:09:45 pour 01 heure 09 minutes et 45 secondes, une simple somme fait l'affaire avec éventuellement un format personnalisé pour cumuler les heures au delà de 24 [hh]:mm:ss ou [mm]:ss pour cumulé les minutes au delà de 60.

    Cordialement,


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    • Proposé comme réponse Mehdi HAMMADI mercredi 18 décembre 2013 10:53
    mardi 17 décembre 2013 14:38
  • Bonjour MehdiH,

    pour répondre à votre dernier message, effectivement si on saisit les durées au format 00:00:00 on obtient le bon résultat.

    pour nos besoins, il est beaucoup plus simple de saisir la durée "minute, seconde" comme un nombre

    1 minute 25 secondes : 1,25

    je joins le fichier qui permet ce calcul via une macro et qui donne le résultat dans une MsgBox :

    http://cjoint.com/?CLskOGbQKJZ

    merci à MichD pour le code

    j'espère que cela pourra être utile à d'autres utilisateurs

    bonne journée et merci pour votre aide


    FiDSDF

    • Marqué comme réponse FiDSDF mercredi 18 décembre 2013 09:41
    mercredi 18 décembre 2013 09:41
  • Bonjour FiDSDF,

    Juste au passage, avez-vous testé le code que je vous ai proposé ?

    Il suffit de le remplacer le code de votre macro par celui-ci dessus et il s'utilise dans le cas ou les durées sont présentées comme vous le proposé mm,ss.

    Cordialement,


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    • Marqué comme réponse FiDSDF mercredi 18 décembre 2013 12:34
    mercredi 18 décembre 2013 10:25
  • non je n'avais pas fait le test... comme j'avais eu l'autre solution et que j'étais un peu prise par le temps (c'est le moment de le dire !!)

    je viens de le faire : effectivement cela fonctionne parfaitement

    merci pour votre aide, j'utiliserai aussi votre solution.

    A conserver précieusement.

    très bonne journée


    FiDSDF

    mercredi 18 décembre 2013 10:50