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 :

Cumul heure 24h => 00:00:00, 48h => 24:00:00 [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut Cumul heure 24h => 00:00:00, 48h => 24:00:00
    Bonjour,

    Dans la formule ci-dessous je fais un cumul d'heure.
    Le résultat me pose un souci à chaque fois que l'on tombe sur un multiple de 24h.
    Quand je tombe sur 24h il affiche 00:00:00 puis il enchaine bien 25:00:00, 26:00:00...
    Puis idem à 48h, 72h...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim ligne_BDD As Integer
    Dim heure As Date
     
    nb_ligne_BDD = BDD.UsedRange.Rows.Count
     
    For ligne_BDD = 3 To nb_ligne_BDD
            heure = heure + BDD.Cells(ligne_BDD, 4)
            BDD.Cells(ligne_BDD, 18).Value = heure
        End If
    Next

  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 169
    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 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela provient du formatage de la cellule : Il faut entourer les "h" par un crochet ouvert et fermé soit [hh]:mm
    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
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.
    Remplace
    par

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut
    Non si je mets un Double mon cumul n'est pas correct.

    Philippe Tulliez où je mets dans mon code ce que tu dis ?

  5. #5
    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 169
    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 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Philippe Tulliez où je mets dans mon code ce que tu dis ?
    Tu peux le faire manuellement en allant dans le formatage des cellules et en VBA, c'est la propriété NumberFormat de l'objet Range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").NumberFormat = "[hh]:mm"
    Attention que ma réponse concerne uniquement le formatage des heures lorsque l'affichage de celles-ci est le reste de tranche de 24h. Je n'ai pas examiné ton code et il possible que la réponse de Docmarti que je salue soit également à prendre en compte.
    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

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Entièrement d'accord avec Philippe que je salut!

    https://www.developpez.net/forums/d1...a/#post9972572

  7. #7
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut
    A mon code je dois ajouter la dernière ligne dans le For/Next car çà ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim ligne_BDD As Integer
    Dim heure As Date
     
    nb_ligne_BDD = BDD.UsedRange.Rows.Count
     
    For ligne_BDD = 3 To nb_ligne_BDD
            heure = heure + BDD.Cells(ligne_BDD, 4)
            BDD.Cells(ligne_BDD, 18).Value = heure
            Range(BDD.Cells(ligne_BDD, 18)).NumberFormat = "[hh]:mm"
    Next

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    @Philippe : Salut a toi Philippe .

  9. #9
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    A mon code je dois ajouter la dernière ligne dans le For/Next car çà ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim ligne_BDD As Integer
    Dim heure As Date
     
    nb_ligne_BDD = BDD.UsedRange.Rows.Count
     
    For ligne_BDD = 3 To nb_ligne_BDD
            heure = heure + BDD.Cells(ligne_BDD, 4)
            BDD.Cells(ligne_BDD, 18).Value = heure
            Range(BDD.Cells(ligne_BDD, 18)).NumberFormat = "[hh]:mm"
    Next
    Tu as trouve la solution.

    Tu peux aussi tester comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            BDD.Cells(ligne_BDD, 18).NumberFormat = "[hh]:mm"
            BDD.Cells(ligne_BDD, 18).FormulaLocal = heure
    Il est generalement preferable de definir la propriete NumberFormat de la cellule avant d'y ecrire la valeur.

  10. #10
    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 169
    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 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je dois ajouter la dernière ligne dans le For/Next car çà ne fonctionne pas
    Au lieu d'écrire cela ne fonctionne pas, il eut été plus clair de signaler que cette ligne de code renvoyait une erreur et nous donner le numéro de celle-ci.
    La ligne 4 doit également être modifiée car je doute que tu aies le nombre de lignes attendues.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nb_ligne_BDD = BDD.UsedRange.Rows.Count
    Imagions que UsedRange renvoie la plage A2:R20. La variable nb_ligne_BDD aura comme valeur 19 donc la boucle ira de 3 à 19 sans écrire à la ligne 20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With BDD.UsedRange
      nb_ligne_BDD = .Row + .Rows.Count - 1
     End With
    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

  11. #11
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut
    Merci pour vos conseils.

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

Discussions similaires

  1. [DeskI V5-V6] Convertir une heure AM/PM en heures (24h)
    Par King_poussin dans le forum Débuter
    Réponses: 4
    Dernier message: 17/08/2010, 14h06
  2. somme des heures > 24h
    Par domik dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 14/08/2010, 08h19
  3. [A-03] afficher un cumul d'heures >24h sans format texte
    Par thiefer dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/11/2008, 15h49
  4. Seuils sur cumuls heures
    Par Plouf69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/07/2008, 14h41
  5. Cumul Heures\minutes pour un groupe
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 05/09/2006, 15h14

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