127 votes

Afficher les millisecondes dans Excel

J'essaie d'afficher les millisecondes dans une macro Excel. J'ai une colonne d'entiers qui sont des horodatages en millisecondes (par exemple 28095200 est 7:48:15.200 am), et je veux créer une nouvelle colonne à côté qui garde une moyenne courante et affiche l'heure dans une colonne de type hh:mm:ss.000 format.

 Dim Cel As Range
 Set Cel = Range("B1")
 temp = Application.Average(Range("A1:A2")) / 1000
 ms = Round(temp - Int(temp), 2) * 1000
 Cel.Value = Strings.Format((temp / 60 / 60 / 24), "hh:mm:ss") _
                & "." & Strings.Format(ms, "#000")

Cela n'affiche que "mm:ss.0" dans la cellule. Pourtant, lorsque je clique sur la cellule, elle affiche "hh:mm:ss" dans la barre de formule. Pourquoi les heures manquent-elles ? Comment puis-je afficher les heures, les minutes, les secondes et les millisecondes ?

225voto

Ben McCormack Points 10669

Cliquez à droite sur la cellule B1 et choisissez Formatage des cellules . Sur Personnalisé Dans la zone de texte intitulée "Le texte", inscrivez ce qui suit Type :

[h]:mm:ss.000 

Pour définir cela en code, vous pouvez faire quelque chose comme :

Range("A1").NumberFormat = "[h]:mm:ss.000"

Cela devrait vous donner ce que vous cherchez.

REMARQUE : les champs spécialement formatés exigent souvent que la largeur de la colonne soit suffisante pour l'intégralité du contenu du texte formaté. Sinon, le texte s'affichera comme ###### .

0 votes

Yay ! Mais y a-t-il un moyen de faire ça dans le code ? Maintenant, chaque fois que j'exécute la macro, le formatage est réinitialisé. (parce que je supprime et recrée la feuille dans la macro.) Cel.EntireRow.NumberFormat = "[h]:mm:ss.000" Mais cela me donne juste "######" dans la cellule.

0 votes

@Evelyn - 3 choses : 1) J'ai ajouté le code dont vous avez besoin pour définir le format des chiffres. 2) Assurez-vous que votre colonne est suffisamment large pour contenir l'intégralité du texte formaté. Voir ma note ci-dessus. 3) Voir la réponse de Gilbert et noter l'utilisation de 3 dans le Round fonction. Cela permet d'obtenir trois décimales au lieu de deux.

0 votes

Ah ! Vous avez raison. J'avais juste besoin d'élargir la colonne. De plus, je voulais seulement une précision de 2 dans ce cas. Je voulais juste qu'elle soit formatée pour 3. Merci beaucoup pour votre aide !

7voto

Eric Points 21

J'ai découvert qu'en Excel 2007, si les résultats sont un tableau provenant d'une requête incorporée, le ss.000 ne fonctionne pas. Je peux coller les résultats de la requête (à partir de SQL Server Management Studio) et formater l'heure sans problème. Mais lorsque j'intègre la requête en tant que connexion de données dans Excel, le format donne toujours .000 comme millisecondes.

4voto

Gilbert Le Blanc Points 25590

Je l'ai fait dans Excel 2000.

Cette déclaration devrait être : ms = Round(temp - Int(temp), 3) * 1000

Vous devez créer un format personnalisé pour la cellule de résultat de l'opération suivante [h]:mm:ss.000

-3voto

George Points 1

Représentez d'abord l'époque du temps en millisecondes sous forme de date (généralement le 1/1/1970), puis ajoutez votre temps en millisecondes divisé par le nombre de millisecondes dans un jour (86400000) :

=DATE(1970,1,1)+(A1/86400000)

Si votre cellule est correctement formatée, vous devriez voir une date/heure lisible par l'homme.

0 votes

Bonjour George et bienvenue ! Malheureusement, l'OP semblait demander spécifiquement un moyen d'obtenir que la cellule soit "correctement formatée". Son approche originale couvre déjà la partie que vous abordez : la conversion de l'horodatage en millisecondes en une valeur de date formatable. De plus, avec six ans, c'est une question plutôt ancienne sur laquelle vous investissez votre temps. Votre contribution serait plus appréciée sur des questions plus récentes !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X