Coller une variable d'heure provenant d'un fichier texte dans une cellule

Bonjour! J'ai un tout petit problème avec la macro que j'ai créé. Cette macro sert à lancer un programme batch, qui lui-même extrait des métadonnées de fichiers vidéos pour les inscrire dans des fichiers texte, pour qu'ensuite la macro récupère ces informations et les inscrive dans des cellule. Tout fonctionne parfaitement, sauf un petit détail.

Une de ces informations est la durée du fichier vidéo. Son format est le suivant: 00:00:00,00

La donnée est bien récupérée par la macro et inscrite dans la cellule. Cependant, même si la cellule est bien en format heure, la donnée est considérée comme du texte jusqu'à ce que je fasse un double-clic sur la cellule. C'est très problématique. J'ai essayé d'ensuite copier la cellule puis de la coller, sans résultat. J'ai aussi essayé de faire correspondre le format de cellule personnalisé avec le format de la donnée provenant du fichier texte ("hh:mm:ss,00" plutôt que "h:mm:ss,00"), sans résultat.

Alors, comment puis-je modifier mon code de façon à ce que la valeur soit automatiquement considérée comme une heure sans action de l'utilisateur?

Merci à ceux qui voudront m'aider!

Sub metadonnees()
'
' Macro1 Macro
'
Dim strNomFichier As String
Dim strFichierExiste As String

Dim fso, f, noprod
noprod = Cells(ActiveCell.Row, "I").Value
If Not noprod = Replace(noprod, ";", "") Then Exit Sub
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("P:\dossier\prog\cherchereg\NOPROD.txt", 2, True)
f.write (noprod)
f.Close
'
RetVal = Shell("P:\dossier\prog\cherchereg.bat", 1)
'
Reponse = MsgBox("---", vbOKCancel + Apparence + TypeDeBox, "Recherche des métadonnées:  " & noprod)
Select Case Reponse
Case vbCancel
Exit Sub
End Select

''''''''''''''''''''''''''''

   strNomFichier = "P:\dossier\prog\cherchereg\txt\duree.txt"
   strFichierExiste = Dir(strNomFichier)
   If Not strFichierExiste = "" Then
      Open "P:\dossier\prog\cherchereg\txt\duree.txt" For Input As #1
        Line Input #1, Data
        Cells(ActiveCell.Row, "AL").Value = Data
        Cells(ActiveCell.Row, "J").Value = Data
      Close #1
   End If

'''''''''''''''''''''''''''''

   strNomFichier = "P:\dossier\prog\cherchereg\txt\resolution.txt"
   strFichierExiste = Dir(strNomFichier)
   If Not strFichierExiste = "" Then
      Open "P:\dossier\prog\cherchereg\txt\resolution.txt" For Input As #1
        Line Input #1, Data
        Cells(ActiveCell.Row, "AM").Value = Data
      Close #1
   End If

End Sub

Hello,

As-tu essaye de déclarer ta variable en format en date ?

Ou une combine de ce style ?

Sub Essai()
  [A1] = Format(Time, "hh:mm:ss")
End Sub

A+,

Kilian

J'avais oublié de le préciser. Oui, j'ai essayé, et avec plusieurs formats.

En fait, je ne peux pas le faire directement avec Data, alors j'ai utilisé une variable intermédiaire. Même résultat.

Et j'ai essayer convertir la cellule en texte pour coller la variable et ensuite reconvertir en heure. Ça ne fonctionne pas non plus.

Est-ce que tu aurais un fichier en exemple ?

A+,

Kilian

Je viens de réessayer. Je devais avoir une erreur de syntaxe parce que en copiant ton code, ça fonctionne!
Merci beaucoup!!!

Oups, non ça ne fonctionne pas correctement. Attend, je fais quelques essais.

Avec ton code, la donnée est bien reconnue comme une heure, mais le résultat est incohérent. Pour un fichier de 29,89 secondes, il est affiché 12:09:06,00 .

Sg394,

Oui certainement car VBA ne prend pas en charge les milisecondes.

Je te laisse te documenter, par exemple Ici

A+,

Kilian

J'avais déjà trouvé cette page et j'ai besoin de travailler avec des centièmes de seconde, pas des millisecondes.

Solution trouvée!
Il suffisait d'utiliser un point plutôt qu'une virgule. Je n'ai qu'à modifier mon programme batch pour que l'heure soit inscrite dans le fichier texte avec un point.

J'aimerais bien savoir qui est l'imbécile qui a décidé que le VBA utiliserait un point plutôt qu'une virgule pour le séparateur décimal.

Rechercher des sujets similaires à "coller variable heure provenant fichier texte"