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 :

heure arrondi au quart d'heure [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut heure arrondi au quart d'heure
    Bonjour,

    Je souhaite avoir l'heure du système arrondi au quart d'heure supérieur. Ex 10h10 devient 10h15

    Cordialement!

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Une fonction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function fQuartDHeure(ByVal dte As Date) As Date
    Dim iHeure As Integer
    Dim iMinute As Integer
     
    iHeure = Format(dte, "hh")
    iMinute = Format(dte, "nn")
     
    If iMinute Mod 15 > 7 Then iMinute = ((iMinute \ 15) + 1) * 15
     
    fQuartDHeure = TimeValue(iHeure & ":" & iMinute)
     
    End Function
    Cordialement,

    PGZ

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    Bonjour,

    il me faudrait une sub plutot qu'une fonction.

    Cordialement.

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Hello

    Citation Envoyé par gigalia Voir le message
    Bonjour,

    il me faudrait une sub plutot qu'une fonction.

    Cordialement.
    Sympa, ta réponse.

    Je passe la main car malheureusement je ne sais faire que des fonctions.
    Les sub ça a l'air vachement dur. Mieux, mais plus dur!

    Bonne chance pour la suite!

    PGZ

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    Bonjour,

    en utilisant la fonction ci-dessous j'obtient un nombre de 4 caractères. Il faudrait que ce nombre se termine par 00, 15, 30, 45 en fonction de la tranche dans laquel il se trouve pour arrivée au quart d'heure supérieur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub heure()
     
    Range("A1") = Format(Now, "hhnn")
     
    End Sub
    Quelqu'un a une idée de comment faire?

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Tu peux toujours essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub heure()
     
    ThisWorkbook.Worksheets("NomFeuille").Range("A1") = fQuartDHeure(Now)
     
    End Sub
    Si tu vois ce qu'est la fonction "fQuartDHeure".

    Cordialement,

    PGZ

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    bonjour,

    merci la sa me plait ^^

    cordialement.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    rectification : ta function ne marche pas toujours ......

    exemple 17h49 reste 17h49.

    Il va falloir continuer à chercher.

    bon week à lundi ^^lol

  9. #9
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Et comme cela :
    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
    Function fQuartDHeure(ByVal dte As Date) As Date
    Dim iHeure As Integer
    Dim iMinute As Integer
     
    iHeure = Format(dte, "hh")
    iMinute = Format(dte, "nn")
     
    If iMinute Mod 15 > 7 Then iMinute = ((iMinute \ 15) + 1) * 15
    If iMinute = 60 Then
        iMinute = 0
        iHeure = iHeure + 1
        If iHeure = 24 Then iHeure = 0
    End If
     
    fQuartDHeure = TimeValue(iHeure & ":" & iMinute)
     
    End Function
    ?

    PGZ

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!!!
    bonjour


    et si il est 11heure 5 minute sa doit marquer quoi?

    ca veut dire que tu veux afficher l'heure exacte 0.00000000001mmmmmmsecondes tout les quart d'heure soit 5 fois par heure



    pgz vraiment trop dure les subs


    bon courage

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Salut Patrick.

    C'est qu'il n'est pas facile, le client! Et le client est

    Un de ces jours (c'est promis!) j'essaie les procédures sub.

    Bonjour chez toi.

    PGZ

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    ok pgz dès que tu commence tu m'appelle j'aimerais m'y mettre moi aussi aux subs

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une autre proposition générique

    La fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function f(ByVal Dte As Date, ByVal q As Byte) As Double 'q le nombre de minute à arrondir
    Dim h As Double, s As Double
     
    s = q / (24 * 60)
    h = Dte - Int(Dte) + s
    h = s * Int(h / s)
    f = Int(Dte) + h
    End Function
    La fonction peut être condensée comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function f(ByVal Dte As Date, ByVal q As Byte) As Double
    Dim s As Double
     
    s = q / (24 * 60)
    f = s * Int(1 + (Dte - Int(Dte)) / s) + Int(Dte) 'Tu enlève +Int(Dte) si tu veux récupérer l'heure sans la date
    End Function
    Pour ne pas recevoir la même remarque, ci-joint la procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub LHeure()
     
    With Worksheets("Feuil2").Range("A1")
        .NumberFormat = "h:mm:ss"
        .Value = f(Now, 15)
    End With
    End Sub

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    trop fort ce mercatog ....

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    je me suis servi de la macro de mercatog avec un format "hhmm". excel m'affiche donc une valeur comme "1530" dans la cellule.

    mais lorsque je copie cette valeur elle passe en format numérique et devient "0,1688888".

    Comment copie le format "hhmm" en format numérique en gardant la valeur initial (dans l'exemple 1530)?

  16. #16
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Change le format de la cellule de destination en "hhmm".

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    le problème est que je ne colle pas vers une cellule mais vers un programme (attachmate myextra). donc le format du programme est numérique.

  18. #18
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function f(ByVal Dte As Date, ByVal q As Byte) As Integer
    Dim s As Double
     
    s = q / (24 * 60)
    f = Format(s * Int(1 + (Dte - Int(Dte)) / s), "hhmm")
    End Function

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    Mais qu'il est formidable si tu t'ennuie j'ai encore en tas de soucis pour ma macro.

  20. #20
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Il y a encore suffisamment de place sur ce forum.

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

Discussions similaires

  1. Comment arrondir un timestamp au quart d'heure ?
    Par clavier12AZQSWX dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/02/2012, 12h18
  2. Index du quart d'heure de la journée ?
    Par [ZiP] dans le forum Delphi
    Réponses: 4
    Dernier message: 04/04/2007, 15h01
  3. trois quarts d'heure
    Par rostomus dans le forum Enigmes
    Réponses: 16
    Dernier message: 25/01/2007, 10h30
  4. Réponses: 1
    Dernier message: 22/06/2006, 09h47
  5. Réponses: 4
    Dernier message: 21/12/2005, 15h36

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