Affichage de l'heure à la milliseconde [Résolu]

Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
- - Dernière réponse : stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
- 14 avril 2010 à 11:14
Bonjour,

je souhaite simplement afficher l'heure de mon ordinateur à la milliseconde près.

J'ai récupérer le code suivant sur internet (en espérant qu'il fonctionne), mais étant débutant je ne sais pas comment le mettre en oeuvre.

'   à placer dans un  module
Private Type SYSTEMTIME
    wYear           As Integer
    wMonth          As Integer
    wDayOfWeek      As Integer
    wDay            As Integer
    wHour           As Integer
    wMinute         As Integer
    wSecond         As Integer
    wMilliseconds   As Integer
End Type
Public Enum ePrecisionConstants
    [Precision Second]
    [Precision TenthSecond]
    [Precision HundredthSecond]
    [Precision ThousandthSecond]
End Enum
Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Public Function GetPreciseTime(ByVal ePrecision As ePrecisionConstants) As  String
    Dim SysTime As SYSTEMTIME
    Call GetSystemTime(SysTime)
    With SysTime
        GetPreciseTime = Format$(.wHour & ":" & .wMinute & ":" & .wSecond, "HH:NN:SS")
        Select Case ePrecision
            Case [Precision TenthSecond]:  GetPreciseTime = GetPreciseTime & ":" & .wMilliseconds \ 100
            Case [Precision HundredthSecond]: GetPreciseTime = GetPreciseTime &  ":" & .wMilliseconds \ 10
            Case [Precision ThousandthSecond]: GetPreciseTime = GetPreciseTime  & ":" & .wMilliseconds
        End Select
    End With
End Function


Remarque :
la fonction est à appeler dans un évènement récurrent (timer vb6, dérivé de timer pour VBA)

remplacer le signe "" par "/" pour obtenir un nombre à virgule

Merci beaucoup de votre aide!
Afficher la suite 

Votre réponse

20/30 réponses

Meilleure réponse
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
3
Merci
c'est comme pour le libellé qui t'affiche l'heure à la millisecond.
fichier.CreationTime.ToString("HH:mm:ss:fff")

après si tu veux une autre mise en forme, ou rajouté aussi la date, je t'invite à aller lire la doc de la fonction ToString

Merci cs_vpoyo 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_vpoyo
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
2
Merci
Voici les étapes, mais énoncé à l'aveugle, j'ai pas le soft sous les yeux :

1. tu crées un nouveau projet de type winform.
2. Dans le Formulaire (vide) que l'assistant t'as créer tu mets un contrôle label et un contrôle Timer

3. dans les propriétés du timer tu fixes la propriété Interval à 1
4. tu doubles click dans le formulaire dans un espace vide : ca va te créer automatiquement la méthode pour l'événément load du formulaire.
et dans cette méthode tu démarres le timer (timer1.Start)

5. tu retournes sur le formulaire et tu double click sur le timer : ca va te créer automatiquement la méthode pour l'événement Tick du timer
et dans cette méthode tu écris la ligne suivante
label1.Text = DateTime.Now.ToString("HH:mm:ss:fff")

tu appuies sur F5, ca lance la compilation, ca té génères l'exécutable dans le répertoire de sortie et ca te le lance :)

après à toi de t'amuser pour améliorer l'outil, par exemple rajouter un bouton qui permet d'arrêter / démarrer le timer
Commenter la réponse de cs_vpoyo
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
Ben il suffit d'appeler la fonction GetPreciseTime en passant en paramètre la précision souhaitée c'est à dire ThousandthSecond (Thousandth = millième).
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Tout d'abord merci de ta réponse rapide.

Mais la fonction je l'appelle depuis où ? (je suis en VBA).

J'ai fait un bouton qui affiche l'heure dans un Label : mais deux problèmes, l'heure s'affiche uniquement à la seconde près (je sais pas pourquoi) et l'heure ne défile pas, il faut que j'appuie sur le bouton pour savoir l'heure (ce que je comprend du fait que j'ai mis le code derrière le clic du bouton mais je ne vois pas comment faire autrement). J'ai écris le code suivant :
Private Sub CommandButton1_Click()

Label1 = GetPreciseTime(ThousandthSecond)

End Sub

Merci beaucoup pour ta précieuse aide.
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
Bonjour,
désolé, je n'avais pas fait attention que tu étais en vba.
Pour l'affichage, je suppose que c'est du excel, il se peut que ce soit simplement le format "automatique" de la cellule.

Sinon en VBA il n'y a pas de timer permettant donc de faire ton événement récurrent.
regarde sur le net, un petit google avec "excel vba timer" et tu vas retrouver des bidouilles permettant de faire ce que tu veux (non testé), sinon il doit y avoir moyen de faire ton propre timer ocx et l'intégré dans ta feuille excel, mais la aussi j'ai jamais fait.
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Merci pour ces précisions!

En fait il me faut une horloge à la milliseconde de mon ordi et j'ai utilisé VBA parce que c'est le seul langage de programmation que je connais à peu près.

Donc si tu connais un moyen SIMPLE d'afficher l'heure en temps réel de l'ordi à la milliseconde je suis preneur à 10000% !!

Merci encore.
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
Au fait, pour l'affichage des milliseconds, il y a une erreur.
la syntaxe c'est :
GetPreciseTime(ePrecisionConstants.[Precision ThousandthSecond])
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Maintenant la valeur s'affiche en entier merci, reste à l'afficher en temps réel sans faire planter le pc ...
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
J'ai essayé les pseudo timer en vba.
ca marche :), mais pour ton cas, bof :-/ en fait ca raffraichi tout seul mais toutes les deux secondes, au mieux tu ne descendras pas en dessous la seconde.
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
D'accord, bin merci quand même, je vais chercher peut-être un autre code, ou je sais pas...
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
Sinon code le en VB.NET

pas très compliqué, dans ton formulaire tu mets un timer, avec la propriété Interval à 1 (1 millisecond).
dans l'événement Load du formulaire tu fais un
timer1.Start

et dans l'événement Tick du timer
libelle1.Text = DateTime.Now.ToString("HH:mm:ss:fff")
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Pas très compliqué...ok, je veux bien essayer !

Comment exécuter, programmer du VB.NET, quoi écrire exactement ?

Merci
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
Pour programmer en Vb.Net il faut récupérer vb.net express c'est gratuit.
ensuite comment exécuter le programme écrit, c'est très facile tu as un exécutable en sortie (fichier .exe)

quoi ecrire exactement : c'est vraiment pas compliqué, donc cherche un petit tuto du style Hello world et tu devrais vite comprendre ;-)
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
J'ai téléchargé Microsoft Visual Basic 2008 Expres Edition, c'est bon ? Mais après ??... et en plus c'est un besoin assez pressant. Donc peux-tu m'aider en décrivant les étapes et le code à écrire stp ! ^^
Commenter la réponse de stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Merci bcp ça marche

Une dernière question : il faut absolument que le texte du label s'affiche en gros ; comment faire ceci ?

Encore merci
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
dans les propriété du label regarde tu as des propriétés sur la Font
tu peux donc redéfinir la police utilisée, la taille, la couleur, si c'est gras, italique, souligné, ...

ps : bravo pour ton tout premier program en vb.net, pas trop douloureux ce dépucelage ?
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Ok bin merci pour ce coup de pouce !

Et oui dépuceler mais c'est pas moi qui tenais les rênes sur ce coup là !...

Merci
Commenter la réponse de stick25
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
En fait maintenant j'aimerais récupérer la date de création d'une photo. Pour ce faire j'ai trouver le code ci-dessous, mais même problème, je sais pas quoi en faire !
Private Const GENERIC_READ = &H80000000
Private Const FILE_SHARE_READ = &H1
Private Const OPEN_EXISTING = 3
Private Const INVALID_HANDLE_VALUE = -1

Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type

Private Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type

Private Declare Function GetFileTime _
    Lib "kernel32" _
    ( _
    ByVal hfile As Long, _
    lpCreationTime As Any, _
    lpLastAccessTime As Any, _
    lpLastWriteTime As Any _
    ) _
    As Long
Private Declare Function FileTimeToSystemTime _
    Lib "kernel32" _
    ( _
    lpFileTime As FILETIME, _
    lpSystemTime As SYSTEMTIME _
    ) _
    As Long
Private Declare Function CreateFile _
    Lib "kernel32" _
    Alias "CreateFileA" _
    ( _
    ByVal lpFileName As String, _
    ByVal dwDesiredAccess As Long, _
    ByVal dwShareMode As Long, _
    lpSecurityAttributes As Any, _
    ByVal dwCreationDisposition As Long, _
    ByVal dwFlagsAndAttributes As Long, _
    ByVal hTemplateFile As Long _
    ) _
    As Long
Private Declare Function CloseHandle _
    Lib "kernel32" _
    ( _
    ByVal hObject As Long _
    ) _
    As Long
Private Declare Function LocalFileTimeToFileTime _
    Lib "kernel32" _
    ( _
    lpLocalFileTime As FILETIME, _
    lpFileTime As FILETIME _
    ) _
    As Long
Private Declare Function FileTimeToLocalFileTime _
    Lib "kernel32" _
    ( _
    lpFileTime As FILETIME, _
    lpLocalFileTime As FILETIME _
    ) _
    As Long

Function GetFileCreationTime(FilePath As String) As Date
    Dim hfile As Long
    Dim fileCreationTime As FILETIME
    Dim sysCreationTime As SYSTEMTIME
    Dim fileLocalTime As FILETIME

    'Dans un premier temps, nous acquierons un hfile sur le fichier désiré
    hfile = CreateFile( _
        FilePath & vbNullChar, _
        GENERIC_READ, _
        FILE_SHARE_READ, _
        ByVal 0&, _
        OPEN_EXISTING, _
        0, _
        0)

    If hfile <> INVALID_HANDLE_VALUE Then
        'On récupère ensuite l'heure de création du fichier.  
        'Les autres dates importantes sont obtenues de manière similaire en choisissant le(s) paramètre(s) retourné(s)
        If GetFileTime(hfile, _
            fileCreationTime, _
            ByVal 0&, _
            ByVal 0& _
            ) Then

            'La date UTC est convertie en date locale
            If FileTimeToLocalFileTime( _
                fileCreationTime, _
                fileLocalTime _
                ) Then

                'On récupère les différentes composantes de la date
                If FileTimeToSystemTime( _
                    fileLocalTime, _
                    sysCreationTime _
                    ) Then

                    'On retrouve un objet Date, plus simple à manipuler en VB
                    GetFileCreationTime = DateSerial( _
                        sysCreationTime.wYear, _
                        sysCreationTime.wMonth, _
                        sysCreationTime.wDay _
                        ) _
                        + _
                        TimeSerial( _
                        sysCreationTime.wHour, _
                        sysCreationTime.wMinute, _
                        sysCreationTime.wSecond _
                        )
                End If
            End If
        End If

        'Ne pas oublier de fermer un fichier ouvert!
        CloseHandle hfile
    End If
End Function 

http://faq.vb.free.fr/index.php?question=156

9a serait vraiment cool si tu pouvais m'aider à faire fonctionner ceci !

Merci d'avance
Commenter la réponse de stick25
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
0
Merci
gnnnnnnnnarg


alors étape 1 : tu prends ce code et tu l'imprime, une fois imprimer tu peux le bruler car ca sert a rien

Pour récupérer la date de création d'un fichier c'est deux lignes de codes :

System.IO.FileInfo fichier = new System.IO.FileInfo("c:\monImage.png")
label2.Text = fichier.CreationTime.ToString

après à toi de mettre ce bout de code dans l'événement click d'un bouton, dans le load du formulaire, ou ailleurs. (rmrq : label2 ici serait un second label dans le formulaire)
Commenter la réponse de cs_vpoyo
Messages postés
64
Date d'inscription
jeudi 4 mars 2010
Dernière intervention
17 juin 2010
0
Merci
Merci. J'ai écris le code suivant mais des erreurs :

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        System.IO.FileInfo(fichier = New System.IO.FileInfo("D:\petitjean.mathieu\Mes documents\Mes images\Nouveau dossier\IMG_0005.CR2"))
        Label2.Text = fichier.CreationTime.ToString

    End Sub


Erreurs :
'FileInfo' is a type in 'IO' and cannot be used as an expression.
Name 'fichier' is not declared.


Merci de ton aide pour corriger ceci. J'ai essayer e déclarer 'fichier' en string mais je sais pas où l'écrire car des erreurs persistent.
Commenter la réponse de stick25

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.