1 votes

Comment puis-je ajouter une durée fixe à toutes les chaînes "hh:mm" d'un document ?

J'ai un document qui est la transcription d'une interview vidéo. La vidéo elle-même comporte un code temporel SMPTE intégré ainsi qu'un code temporel intégré (BITC). Le timecode SMPTE et le BITC correspondent à l'heure à laquelle l'interview a été tournée, au format 24 heures.

Dans le document de transcription, il y a des horodatages entre crochets toutes les deux minutes, en [hh:mm] format. Cependant, ces horodatages de transcription commencent à "00:00".

Existe-t-il un moyen d'utiliser une sorte de fonction "Rechercher et remplacer" pour parcourir le document, trouver toutes les occurrences de hh:mm et ajouter un temps fixe à ces horodatages, reflétant ainsi l'heure de la journée, correspondant au timecode SMPTE ?

La solution parfaite serait un outil qui :

  1. Trouve tous les horodatages dans [hh:mm] format
  2. Ajoute l'heure de début de l'entretien, "yy:yy", au format 24 heures, à tous les horodatages originaux, "xx:xx".
  3. Remplace les horodatages par le nouvel horodatage corrigé, "zz:zz", qui serait égal à xx:xx+yy:yy.

Ainsi, par exemple, si mon entretien a commencé à 9h30 du matin, chaque horodatage sera remplacé de la manière suivante :

  1. 00:00 + 9:30 = 9:30
  2. 00:02 + 9:30 = 9:32
  3. 00:04 + 9:30 = 9:34
  4. Etc.

0voto

Sruly Points 918

Je doute que ce soit la meilleure façon de procéder, mais voici une solution. Elle n'est évidemment pas très aboutie, car je ne sais pas comment vous mettrez votre incrément de temps ou si les données ne sont qu'un paragraphe dans une seule cellule, mais elle devrait vous permettre de faire une bonne partie du chemin.

Il divise la valeur de la cellule active en un tableau à la recherche de "[", puis il ajuste les 2 premiers caractères en fonction du pas de l'heure et les caractères 4 et 5 en fonction du pas de la minute, puis il remet le tout en ordre.

De plus, cela fonctionne sur la cellule active, ce qui n'est pas une très bonne pratique de codage.

Sub update_times()

    Dim sParts() As String
    Dim input_text As String
    Dim output_text As String
    Dim split_on As String
    Dim hours_add As Integer
    Dim minutes_add As Integer
    Dim hours_final As Integer
    Dim minutes_final As Integer

    split_on = "["
    hours_add = 9
    minutes_add = 30
    input_text = ActiveCell.Value

    sParts = Split(input_text, split_on)
    output_text = sParts(0)

    For i = 1 To UBound(sParts)
        hours_final = Left(sParts(i), 2) + hours_add
        minutes_final = Mid(sParts(i), 4, 2) + minutes_add
        'checks to wrap data
        If minutes_final > 59 Then
            hours_final = hours_final + 1
            minutes_final = minutes_final - 60
        End If
        If hours_final > 23 Then
            hours_final = hours_final - 24
        End If
        'put the part back together with the new hour and minutes
        sParts(i) = "[" & Format(hours_final, "00") & ":" & Format(minutes_final, "00") & Right(sParts(i), Len(sParts(i)) - 5)
        'add the part to the final string
        output_text = output_text & sParts(i)
    Next
    ActiveCell.Value = output_text

End Sub

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X