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 du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Points : 59
    Points
    59
    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 éminent 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
    Points : 6 591
    Points
    6 591
    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 du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    il me faudrait une sub plutot qu'une fonction.

    Cordialement.

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent 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
    Points : 6 591
    Points
    6 591
    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 du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Points : 59
    Points
    59
    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 éminent 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
    Points : 6 591
    Points
    6 591
    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 du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    merci la sa me plait ^^

    cordialement.

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Points : 59
    Points
    59
    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 éminent 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
    Points : 6 591
    Points
    6 591
    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
    Points : 12 068
    Points
    12 068
    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

  11. #11
    pgz
    pgz est déconnecté
    Expert éminent 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
    Points : 6 591
    Points
    6 591
    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
    Points : 12 068
    Points
    12 068
    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

  13. #13
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    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 du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Points : 59
    Points
    59
    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 sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Change le format de la cellule de destination en "hhmm".

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Points : 59
    Points
    59
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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 du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Points : 59
    Points
    59
    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 sénior 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
    Points : 31 877
    Points
    31 877
    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