Bonjour,

J'essaie de convertir une cellule contenant une durée en format texte du genre 1(h) 26(m) 35(s) en secondes.

J'ai écrit un bout de code (voir ci-dessous). Ce code fonctionne sauf lorsque je dépasse 9(h) ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'---------------------------------------------------------------------------------------
' Procédure : ConversionSecondes
' Auteur    : Jean-Pierre
' Date      : 08/02/2013
' Objet     : Conversion d'une donnée de type 1(h) 26(m) 30(s) en secondes
'---------------------------------------------------------------------------------------
Public Function ConversionSecondes(strDuree As String) As Long
  Dim bytPosh     As Byte       ' position de lecture de la parenthèse ouvrante des heures
  Dim bytPosm     As Byte       ' position de lecture de la parenthèse ouvrante des minutes
  Dim intHeures   As Integer    ' nombre d'heures
  Dim bytMinutes  As Byte       ' nombre de minutes
  Dim bytSecondes As Byte       ' nombre de secondes
  bytPosh = InStr(strDuree, "(h)")
  intHeures = CInt(Left(strDuree, bytPosh - 1))
  bytPosm = InStr(strDuree, "(m)")
  Select Case bytPosm - bytPosh
    Case 5: bytMinutes = CByte(Mid(strDuree, bytPosm - 1, 1))
    Case 6: bytMinutes = CByte(Mid(strDuree, bytPosm - 2, 2))
  End Select
  bytSecondes = CByte(Mid(strDuree, Len(strDuree) - 4, 2))
  ConversionSecondes = CLng((intHeures * 3600) + (bytMinutes * 60) + bytSecondes)
End Function
Avez-vous une idée ?