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) ...
Avez-vous une idée ?
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
Partager