Contrairement aux autres questions auxquelles j'ai répondu, je n'ai pas vu mon problème abordé. Je travaille à la télévision et j'ai des codes temporels qui doivent être évalués/stokés. 01:23:45:04
représente 1 heure, 23 minutes, 45 secondes et 4 images (sur 24 ou 30 en fonction de certains paramètres). Lorsque je combine des valeurs séparées provenant de cellules Excel pour former un code temporel, Excel ignore les zéros d'ouverture partout et ne me permet pas de formater correctement. Il préfère afficher les jours:heures:minutes:secondes:secondes partielles en millièmes de seconde, etc... J'ai besoin de pouvoir combiner 4 nombres à deux chiffres différents en un code temporel à 8 chiffres séparés par des deux-points (:
) exactement comme ceci : 01:43:23:02
et ne pas obtenir 1:43:23:2
de la part d'Excel.
Réponses
Trop de publicités?Voulez-vous dire que vous avez des heures, des minutes, des secondes et des images dans des cellules différentes? Si vous avez ceux-ci dans A2, B2, C2 et D2 respectivement, essayez d'utiliser la fonction TEXTE pour concaténer et conserver les zéros de remplissage, c'est-à-dire
=TEXTE(A2,"00:")&TEXTE(B2,"00:")&TEXTE(C2,"00:")&TEXTE(D2,"00")
Si vous voulez seulement les stocker, il suffit de formater la cellule. Si vous allez utiliser ces données, vous devrez utiliser une autre méthode.
Stockez uniquement :
1- Sélectionnez la plage de cellules que vous voulez formater
2- Entrez Démarrer-Numéro-Format Personnalisé
3- Écrivez sur le type : 00\:00\:00\:00
À partir de ce moment, la cellule adaptera les données saisies au format 00:00:00:00
Si vous saisissez 123, la cellule affichera 00:00:01:23
Si vous saisissez 1234567, la cellule affichera 01:23:45:67
Attention ! Si vous cliquez sur une cellule formatée avec des données, vous verrez que le format disparaît. Cela est dû au fait que nous avons simplement forcé la cellule à une sorte de représentation graphique.
Une cellule en mode texte serait le bon moyen de stocker ce type de données. Pour faire des additions et des soustractions de TC, cette méthode ne fonctionne pas car un TC est un système sexagésimal et Excel utilise le décimal. Il n'est pas non plus utile de formater la cellule en mode TEMPS.
Il y a une autre façon et c'est d'utiliser une chaîne de texte pour stocker un TC dans le format 00:00:00:00
Lorsque vous voulez ajouter deux TC, vous devez tout passer en images ajoutez ou soustrayez ces deux valeurs et convertissez à nouveau en code TC. Comme les données sont une chaîne, commencez par supprimer les deux-points du TC avec l'instruction replace :
numToConvert = Remplacer (numToConvert, ":", "")
La fonction pour convertir en secondes ressemblerait à ceci :
Dim fra2s, seg2s, min2s, hor2s En Double
fra2s = 0
seg2s = 0
min2s = 0
hor2s = 0
fra2s = Milieu (numToConvert, 7, 2) / framesRef
seg2s = Milieu (numToConvert, 5, 2)
min2s = Milieu (numToConvert, 3, 2) * 60
hor2s = Milieu (numToConvert, 1, 2) * 3600
TcEnSecondes = hor2s + min2s + seg2s + fra2s
où framesRef est le système de référence (24,25,29,97 ...)
Maintenant, nous ajoutons ou soustrayons les deux valeurs et recalculons le TC dans son format correct. La fonction ressemblerait à ceci :
Dim s2fra, s2seg, s2min, s2hor, TimeCodeTMP En Double
TimeCodeTMP = numToConvertInSeconds
s2fra = 0
s2seg = 0
s2min = 0
s2hor = 0
TimeCodeTMP = 0
'Les opérateurs "\" ou "MOD" ne peuvent pas être utilisés car VBA Excel renvoie des valeurs entières et nous avons besoin de décimales
s2hor = Int (TimeCodeTMP / 3600)
TimeCodeTMP = TimeCodeTMP - (3600 * s2hor)
s2min = Int (TimeCodeTMP / 60)
TimeCodeTMP = TimeCodeTMP - (60 * s2min)
s2seg = Int (TimeCodeTMP)
TimeCodeTMP = TimeCodeTMP - (s2seg)
s2fra = Int (Arrondi (TimeCodeTMP * framesRef, 0))
HHMMSSFF = Droite ("00" & s2hor, 2) & ":" & Droite ("00" & s2min, 2) & ":" & Droite ("00" & s2sec, 2) & ":" & Droite ("00"& s2fra, 2)
La dernière ligne est responsable d'ajouter un zéro au nombre inférieur à 10. Exemple : 1:5:42:7 devient 01:05:42:07 au format de chaîne.
Si vous ne voulez pas perdre de temps, il y a un Calculateur de TC Excel ici. C'est gratuit et pour tout le monde :
https://drive.google.com/drive/folders/1_mj7JmciCAhs6Tj1Qh3cw22GbSaF9Zwz