Petite macro word servant à incrémenter toutes les chaînes de caractères codant le temps dans un sous-titre.
Source / Exemple :
Sub IncrementTempo()
Dim ToutLeSub As String
Dim TexteFinal As String
Dim ligne As String
Dim carac As String
Dim increment As Long
Dim LongueurSub As Integer
Dim i As Integer
TexteFinal = ""
increment = InputBox("temps additionnel en millisecondes", "Tempo")
'selection de tout le texte
Selection.WholeStory
ToutLeSub = Selection
LongueurSub = Len(ToutLeSub)
'decoupage ligne a ligne
For i = 1 To LongueurSub
'caractere lu
carac = Mid(ToutLeSub, i, 1)
'detection retour a la ligne (caractere de valeur 13)
If Asc(carac) <> 13 Then ligne = ligne + carac Else TexteFinal = TexteFinal + ReecritureSub(ligne, increment)
Next
Selection.TypeText (TexteFinal)
End Sub
Function ReecritureSub(texte As String, increment As Long) As String
'detection lignes de tempo contenant la chaine "-->"
If Mid(texte, 13, 5) = " --> " Then texte = IncremTempo(texte, increment)
'obtention texte finale avec les tempos modifiees
ReecritureSub = texte + vbCr
'RAZ de la ligne
texte = ""
End Function
Function IncremTempo(texte As String, increment As Long) As String
Dim PremiereTempo As String
Dim SecondeTempo As String
PremiereTempo = Mid(texte, 1, 13)
SecondeTempo = Mid(texte, 18, 13)
IncremTempo = AdditionTempo(PremiereTempo, increment) + " --> " + AdditionTempo(SecondeTempo, increment)
End Function
Function AdditionTempo(texte As String, increment As Long) As String
Dim heure As Integer
Dim minute As Integer
Dim seconde As Integer
Dim millisec As Integer
heure = Mid(texte, 1, 2) + (increment \ 3600000)
minute = Mid(texte, 4, 2) + (increment \ 60000) - ((increment \ 3600000) * 60)
seconde = Mid(texte, 7, 2) + (increment \ 1000) - ((increment \ 60000) * 60)
millisec = Mid(texte, 10, 3) + increment - ((increment \ 1000) * 1000)
While (millisec >= 1000)
millisec = millisec - 1000
seconde = seconde + 1
Wend
While (seconde >= 60)
seconde = seconde - 60
minute = minute + 1
Wend
While (minute >= 60)
minute = minute - 60
heure = heure + 1
Wend
AdditionTempo = convertFormat(heure, 2) + ":" + convertFormat(minute, 2) + ":" + convertFormat(seconde, 2) + "," + convertFormat(millisec, 3)
End Function
Sub CorrigeValeur(minute As Integer, seconde As Integer, millisec As Integer)
Do
millisec = millisec - 1000
seconde = seconde + 1
While (millisec > 1000)
End Sub
Function convertFormat(valeur As Integer, longueur As Integer) As String
convertFormat = valeur
If Len(convertFormat) < longueur Then convertFormat = "0" + convertFormat
If Len(convertFormat) < longueur Then convertFormat = "0" + convertFormat
End Function
Conclusion :
Il s'agit juste d'un exemple qui permettra aux débutants de mieux comprendre la manipulation de chaînes de caractères avec un exemple concret:
00:00:13,835 --> 00:00:21,105
Hello!
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.