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 :

Arrondir à la demie-heure inférieur [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Par défaut Arrondir à la demie-heure inférieur
    Bonjour,

    Je voudrais arrondir une date au format dd/mm/yyyy 00h00 à la demi-heure inférieur

    Si heure comprise entre 11h01 et 11h29 alors arrondi = 11h
    Si heure comprise entre 11h31 et 11h59 alors arrondi = 11h30
    Si heure comprise entre 12h01 et 12h29 alors arrondi = 12h
    etc...

    Comment faire ?

    PS : Actuellement j'arrondis à la demi-heure comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrondi = Round(CDate(DateDebut) * 48, 0) / 48
    Mais s'il est 11h29 alors il arrondi à 11h30.

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

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

    Tu peux essayer avec :
    Arrondi = Int(CDate(DateDebut) * 48) / 48


    Cordialement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Debug.Print Arondi30("01/01/2015 00:01")
    Debug.Print Arondi30("01/01/2015 00:25")
    Debug.Print Arondi30("01/01/2015 00:30")
    Debug.Print Arondi30("01/01/2015 00:35")
    Debug.Print Arondi30("01/01/2015 00:50")
    End Sub
    Function Arondi30(t As Date) As Date
    Arondi30 = t - CDate("00:" & (Hour(t) * 60) + Minute(t) Mod 30)
    End Function
    Dernière modification par Invité ; 08/09/2015 à 10h38.

  4. #4
    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
    sinon traitre le soucis en string tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    madate = IIf(Split(Format(Now, "dd/mm/yyyy hh:nn"), ":")(1) >= 30, Format(Now, "dd/mm/yyyy hh") & "h30", Format(Now, "dd/mm/yyyy hh") & "h00")
    MsgBox madate
    End Sub
    sinon pour traiter juste l heure c'est pareil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test2()
    monheure = IIf(Split(Time, ":")(1) >= 30, Format(Time, "hh") & "h30", Format(Time, "hh") & "h00")
    MsgBox monheure
    End Sub
    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

  5. #5
    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
    bonjour durupt
    aie!!!
    Nom : Capture.JPG
Affichages : 1040
Taille : 95,7 Ko

    et oui le mod 30 peut etre positif ou negatif

    31 mod 30 donne 1
    29 mod 30 donne 1
    walouh walouh !!!
    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

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 104
    Par défaut
    Super merci ça fonctionne.

    Une date à minuit est toujours noté sous la forme "dd/mm/yyyy" dommage d'ailleurs je préférais "dd/mm/yyyy" 00:00" mais l'essentiel c'est que tout fonctionne correctement.

    Merci de votre aide.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    et oui le mod 30 peut etre positif ou negatif

    31 mod 30 donne 1
    29 mod 30 donne 1
    walouh walouh !!!
    non:
    31 mod 30 donne 1
    29 mod 30 donne 29

    mod donne le résultat du reste d'une division entière!

    31/30 =1 il reste 1
    Images attachées Images attachées  
    Dernière modification par Invité ; 08/09/2015 à 11h13.

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test3()
    Debug.Print Arondi30("01/01/2015 00:01")
    Debug.Print Arondi30("01/01/2015 00:25")
    Debug.Print Arondi30("01/01/2015 00:30")
    Debug.Print Arondi30("01/01/2015 00:35")
    Debug.Print Arondi30("01/01/2015 00:50")
    End Sub
    Function Arondi30(madate)
    Arondi30 = IIf(Split(Format(madate, "dd/mm/yyyy hh:nn"), ":")(1) >= 30, Format(madate, "dd/mm/yyyy hh") & "h30", Format(madate, "dd/mm/yyyy hh") & "h00")
    End Function
    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

  9. #9
    Invité
    Invité(e)
    Par défaut
    aller pour le fun!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Debug.Print Arondi30("01/01/2015 00:01")
    Debug.Print Arondi30("01/01/2015 00:25")
    Debug.Print Arondi30("01/01/2015 00:30")
    Debug.Print Arondi30("01/01/2015 00:35")
    Debug.Print Arondi30("01/01/2015 00:50")
    End Sub
    Function Arondi30(t As Date) As String
    Arondi30 = Format(t - CDate("00:" & (Hour(t) * 60) + Minute(t) Mod 30), "dd/mm/yyyy hh:mm")
    End Function

  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 re
    oui la 2 eme est bonne en string !

    parcontre je comprends toujour pas pourquoi ta 1 ere version ne donnait pas les deux premiers si ca n'est pas le mod 30
    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
    Invité
    Invité(e)
    Par défaut
    si c'était bien mod 30, comme dans ton poste #5, mais cdate retourne 01/01/2015 et pas 01/01/2015 00:00 !

    le problème, si tu retourne cdate dans une cellule, il faut faut formater la cellule en "dd/mm/yyyy hh:mm", si tu retourne un string, tu resique d'inverser le jour et le mois!

    si la fonction est destiné à reneiger une cellule, le format international est de rigueur! "yyyy-mm-dd hh:mm"

  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
    a oui !!! qué bené je fais
    comme quoi de fois etre trop habitué on fini par plus regarder
    c'est pour ca que je préfere manipuler les dates en string avec format c'est plus long mais plus precis dans le sens ou on peut décanter chaque unité de mesure
    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

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

Discussions similaires

  1. [XL-2007] Arrondir à la demie-heure inférieur
    Par skaraa dans le forum Excel
    Réponses: 5
    Dernier message: 08/09/2015, 10h12
  2. [XL-2010] Arrondir des heures à la demie heure
    Par cag's dans le forum Excel
    Réponses: 5
    Dernier message: 29/07/2015, 10h09
  3. Arrondir time unix à la demi heure suppérieur
    Par javast dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2014, 10h37
  4. executer une instruction chaque demi heure
    Par ayadi_rajaa dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 05/09/2006, 17h24
  5. [C#][VS2003] Arrondir un float à l'inférieur le plus proche
    Par gregos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/11/2005, 12h14

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