John travaille dans l’industrie de la télévision, où le chronométrage est fait à une résolution plus fine qu’une seconde. La vidéo télévisée doit prendre en compte les heures, les minutes, les secondes et les images. (Il y a trente images par seconde.) John se demandait s’il y avait un moyen de gérer les images dans Excel.

Il n’existe aucun moyen de gérer les images dans le cadre des valeurs de temps natives dans Excel. (Dans l’industrie de la télévision, une valeur temporelle qui inclut des images est souvent appelée «code temporel» ou «code temporel».) Il existe cependant plusieurs choses que vous pouvez faire pour travailler avec des images. La suggestion la plus évidente est peut-être de conserver les heures, les minutes et les secondes comme valeur de temps normale, puis de placer les images dans une cellule séparée. L’inconvénient immédiat de cette approche est que les calculs des «temps TV» ne sont pas aussi faciles qu’ils le seraient s’ils étaient représentés en une seule valeur.

Pour contourner ce problème, essayez de faire vos propres calculs dans une macro.

Excel passe par un processus interne de conversion des temps en valeurs décimales qui peuvent être utilisées très facilement. Vous pouvez simuler ce même processus de conversion, en convertissant une valeur de temps (y compris les images) en une valeur décimale. L’heure TV, au format 00: 29: 10: 10, peut être stockée dans une cellule (où Excel la traitera comme une chaîne) puis convertie en une valeur par la macro.

Il y a un problème ici, bien sûr: vous ne pouvez pas convertir l’heure en une vraie valeur décimale entre 0 et 1 comme Excel le fait pour les heures. La raison a à voir avec les limites des chiffres significatifs d’Excel. Pour arriver à une valeur, vous diviseriez les heures par 24, les minutes par 1440 (24 60), les secondes par 86400 (24 60 60) et les images par 2592000 (24 60 60 30, en supposant que vous travaillez à 30 images par seconde). Lorsque vous commencez à entrer dans des valeurs aussi petites, cela dépasse les limites d’Excel de tout maintenir à quinze chiffres significatifs. Ainsi, vous vous retrouvez avec des erreurs d’arrondi inévitables sur la valeur des images.

Une solution à ce problème consiste à ne pas essayer de travailler avec des valeurs décimales comprises entre 0 et 1, mais plutôt avec des entiers. Si vous convertissez la chaîne de temps en une valeur entière qui représente le nombre total d’images dans le temps, vous pouvez facilement faire des calculs sur la valeur résultante.

La macro suivante effectuera la conversion d’une chaîne au format déjà mentionné:

Function Time2Num(Raw) As Long     Dim FirstColon As Integer     Dim SecondColon As Integer     Dim ThirdColon As Integer     Dim NumHours As Integer     Dim NumMinutes As Integer     Dim NumSeconds As Integer     Dim NumFrames As Integer     Dim FrameRate As Integer     Dim T2D As Long

' Change the following to the number of frames     ' per second with which you are working     FrameRate = 30

FirstColon = InStr(Raw, ":")

SecondColon = InStr(FirstColon + 1, Raw, ":")

ThirdColon = InStr(SecondColon + 1, Raw, ":")



NumHours = Val(Mid(Raw, 1, FirstColon - 1))

NumMinutes = Val(Mid(Raw, FirstColon + 1, SecondColon - 1))

NumSeconds = Val(Mid(Raw, SecondColon + 1, ThirdColon - 1))

NumFrames = Val(Mid(Raw, ThirdColon + 1, Len(Raw)))



T2D = CLng(NumHours)

T2D = T2D  60 + NumMinutes     T2D = T2D  60 + NumSeconds     T2D = T2D * FrameRate + NumFrames

Time2Num = T2D End Function

Pour voir comment cela fonctionne, si vous avez une chaîne telle que 37: 15: 42: 06 dans la cellule A4 et que vous utilisez la formule = Time2Num (A4), le résultat est la valeur 4024266, qui est le nombre d’images dans 37 heures, 15 minutes, 42 secondes et 6 images. Pour reconvertir ces valeurs en un temps compréhensible, vous pouvez utiliser la fonction suivante:

Function Num2Time(Raw) As String     Dim NumHours As Integer     Dim NumMinutes As Integer     Dim NumSeconds As Integer     Dim NumFrames As Integer     Dim FrameRate As Integer     Dim RemainingTime As Long

' Change the following to the number of frames     ' per second with which you are working     FrameRate = 30

NumHours = Raw \ (CLng(FrameRate  60)  60)

RemainingTime = Raw Mod (CLng(FrameRate  60)  60)



NumMinutes = RemainingTime \ (60 * FrameRate)

RemainingTime = RemainingTime Mod (60 * FrameRate)



NumSeconds = RemainingTime \ FrameRate     RemainingTime = RemainingTime Mod FrameRate

NumFrames = RemainingTime

Num2Time = Format(NumHours, "00") & ":" & _       Format(NumMinutes, "00") & ":" & _       Format(NumSeconds, "00") & ":" & _       Format(NumFrames, "00")

End Function

En combinant les deux fonctions, vous pouvez faire des calculs avec les temps. Par exemple, supposons que vous ayez l’heure 00: 29: 10: 10 dans la cellule A4 et l’heure 00: 16: 12: 23 dans la cellule A5. Si vous mettez la formule suivante dans une cellule, vous pouvez trouver la différence entre les deux temps:

=Num2Time(Time2Num(A4)-Time2Num(A5))

Le résultat est 00: 12: 57: 17.

Les exemples présentés ici sont rudimentaires; ils ne prennent pas en compte la gestion des erreurs ou la vérification des limites sur les temps utilisés. Vous pouvez soit développer les exemples pour répondre à vos besoins, soit vous tourner vers une source tierce. Par exemple, vous pouvez trouver une explication (avec un exemple de classeur) pour les heures NTSC et PAL à l’URL suivante:

http://www.kenstone.net/fcp_homepage/timecode_spreadsheet.html

Il existe également d’autres solutions macro-basées sur Internet.

La meilleure approche consiste à utiliser votre moteur de recherche préféré et à rechercher «time code excel» ou «time code excel» (sans les guillemets). Vous trouverez de nombreux exemples de code avec lesquels vous pouvez commencer.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (8353) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Calculating_TV_Time [Calcul de l’heure TV].