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 :

affichage heure 12h


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Par défaut affichage heure 12h
    Bonjour à tous

    Voilà j'ai un problème avec l'affichage de l'heure dans une cellule.
    A partir d'un userForm et de deux listes déroulantes(une pour les heures et l'autre pour les minutes) j'arrive à me construire une heure. Ca ca marche impec.
    A un moment dans mon programme j'ai besoin de copier cette heure dans une autre feuille... J'ai vu en mode execution en pas à pas que à un moment la valeur était transmise sous la forme 0,33333333 par exemple mais j'ai pu restifier en métant Format(heure, "hh:mm") et ca marche pour toute les heures SAUF une... 12h00
    si je tente de copier 12:00 de la feuille 1 vers la feuille 2 ca affichera 00:00 dans la case.. pourtant le type de la cellule de reception est le même que celui de départ (heure 13:30)

    D'avance merci pour votre aide

  2. #2
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Peux-tu fournir plus de précisions :

    Comment construis-tu ton heure ? La méthode la plus "naturelle" est de faire appel à la fonction TimeSerial. Est-ce comme cela que tu t’y prends ?

    A un moment dans mon programme j'ai besoin de copier cette heure
    Copier à partir de quoi ? d’un objet Range ? Autant que possible il faut éviter les Copier / Coller par VBA. Il est beaucoup + efficace de manipuler les propriétés des objets et/ou des variables.

    Voici un exemple de code avec 2 ListBoxes nommées LHeures et LMinutes et un bouton de validation nommé BOK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub BOK_Click()
    Dim MonHeure As Date
        ' Ici un éventuel contrôle de saisie
        MonHeure = TimeSerial(LHeures, LMinutes, 0)
        MsgBox MonHeure ' A rempacer par ton traitement
        Unload Me
    End Sub
    Bonne année

    Michel Gaboly

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Par défaut
    Pour créer mon heure j'ai fait une comboBox qui va de 0 à 24 et une autre de 0 à 59...

    Bon apparement ya plus simple mais ca marche bien je trouve (j'ai trop la flem de changer, sauf si ca s'avère le seul moyen de résoudre mon problème)
    Une fois que j'ai récupérer les valeurs de mes deux listes, je les fusionne ( et ca me fait un truc au format hh:mm) et ca je peut l'insérer dans une cellule VBA.

    Pour faire mon copier coller je récupère la valeur de la celulle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim heure as string
    heure = ActiveCell.value
    et ensuite pour la réinsérer je fait comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.value = Format(heure, "hh:mm")
    et ca marche pour toutes le heures sauf pour 12:00 :-s

    merci

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    cela ressemble à une histoire de formatage avec AM et PM, apparemment ...

    et s'il fallait un exemple pour s'en convaincre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
      MsgBox Format("12:00", "hh:mm") 'donne bien 12:00
      MsgBox Format("12:00 AM", "hh:mm") 'donnera 00:00
    End Sub
    reste à savoir à quel niveau le bourde a été faite, et seul notre ami BountyHunter peut le savoir...
    Un seul conseil : rester partout en hh:mm sans traduction en AMPM.

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Par défaut
    A aucun moment je notifie AM ou PM... et si ca venait de la ca merderait pour les autres heures aussi mais c'est pas la cas..

    je sais pas d'ou ca vient... en attendant j'ai bidouillé, si la valeur = 0,5 bah j'insère 12:00 dans la case mais bon c'est moche et pas super pratique...

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bizarre, ton truc...

    Essaye alors de forcer la main :

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click()
      montexte = "12:00"
      pos = InStr(montexte, ":")
      MsgBox Format(TimeSerial(Val(Left(montexte, pos - 1) ), Val(Mid(montexte, pos + 1, 2) ), 0), "hh:mm")
    End Sub
    où toi, tu remplaces :
    Left(montexte, pos - 1) par ce que tu as dans ta combo des heures
    et
    Mid(montexte, pos + 1, 2) par ce que tu as dans la combo des minutes

    laisse les val, hein ...

  7. #7
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Par défaut
    Super uc foutu!! merci beaucoup c'est passé comme ca, j'ai été obligé de récréer mes combo mais bon tant pis, maintenant au mois c'est propre

    merci pour ton aide

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

Discussions similaires

  1. selection infos heure -12h
    Par oldpi dans le forum Linux
    Réponses: 3
    Dernier message: 21/07/2008, 13h57
  2. Affichage Heure negatif
    Par LaPanic dans le forum Excel
    Réponses: 6
    Dernier message: 11/10/2007, 14h49
  3. Affichage Heure De Moins D'une Heure
    Par com-ace dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2006, 15h22
  4. affichage heure systeme
    Par kalou26 dans le forum C++Builder
    Réponses: 5
    Dernier message: 31/05/2006, 21h20
  5. Affichage heure : Qu'est-ce que le BCD ?
    Par Mookie dans le forum Assembleur
    Réponses: 2
    Dernier message: 06/02/2004, 15h46

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