Conversion temps en texte en temps au format hh:mm:ss

Bonjour,
J’ai un (petit) souci à vous soumettre :

J’ai mis en un fichier zip ce zip contient 3 fichiers, je vais vous expliquer ce que contient chacun d’entre eux,

  • le fichier nommé Macro « conso telephone.txt » contient la macro que j’ai mise dans mon fichier personal.xlsb
  • le fichier « Détails des communications.xlsx » contient en colonne E les données à convertir,
  • le fichier « Détails des communications converti.xlsx » contient en colonne H les données converties.

Focalisons-nous sur le fichier « Détails des communications converti.xlsx » résultant de la macro,
Examinons les données en colonne E et comparons-les avec celles obtenues en colonne H.

le problème c’est que la conversion ne se passe pas comme je le souhaite,
regardez dans le fichier Détails des communications converti et comparez le colonne E et H,

  • En colonne E on a les données sous la forme xxh ymin zzs ou yymin zzs ou zzs tout seul ou xh ymin zs tout seul ou ymin zs ou zs tout seul
  • En colonne H on devrait trouver les données sous la forme xx:yy:zz
  • En sachant que s’il n’y a pas de xx le résultat de la conversion sera 00:yy:zz
  • s’il n’y a ni « h » ni « min » le résultat sera 00:00:zz

Merci d’avance pour me dire ce qui cloche dans la macro, en fait ce n’est pas la mienne mais celle de ChatGPT :wink:

Je lui ai posé la même question mais il est toujours en train de réfléchir ;(
Francois

Bonjour,
Vous l’avez demandé au futur Skynet de Terminator ? :grin:
Ps: J’ai pas accès aux fichiers
Will-Fread

Bienvenue dans le metaverse :wink:

Voici le lien de téléchargement.

Entre temps, GPT m’a donné la solution avec ceci :

Sub ConvertirDuree()
Dim rng As Range
Dim i As Long
Dim heures As Integer
Dim minutes As Integer
Dim secondes As Integer
Dim valeurs As Variant

Set rng = Range("E2", Range("E" & Rows.Count).End(xlUp))

For i = 1 To rng.Rows.Count
    valeurs = Split(rng.Cells(i).Value, " ")
    heures = 0
    minutes = 0
    secondes = 0
    
    For j = 0 To UBound(valeurs)
        If InStr(valeurs(j), "h") > 0 Then
            heures = Val(Left(valeurs(j), Len(valeurs(j)) - 1))
        ElseIf InStr(valeurs(j), "min") > 0 Then
            minutes = Val(Left(valeurs(j), Len(valeurs(j)) - 3))
        ElseIf InStr(valeurs(j), "s") > 0 Then
            secondes = Val(Left(valeurs(j), Len(valeurs(j)) - 1))
        End If
    Next j
    
    rng.Cells(i).Offset(0, 3).Value = Format(TimeSerial(heures, minutes, secondes), "hh:mm:ss")
Next i

End Sub

1 « J'aime »

Re,
Cool, bonne continuation ! :grinning:
Will-Fread

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.