j'ai une petite macro qui sert à transformer les heures en secondes sur une feuille Excel.
ex. 12:45:30 = 45930 secondes

Ma macro fonctionne quand je l'utilise sur une seule cellule.
Ce que je veux, c'est qu'il s'applique aussi lorsque l'utilisateur sélectionne plusieurs cellules. La difficulté (pour moi) vient du fait que les cellules qui seront selectionnée ne sont jamais les même

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Sub Macro2()
 
Dim strHeure As String
Dim strHeureS As String
Dim lgSecHt As Long
Dim lgHeure As Long
 
Dim strMinuteS As String
Dim lgSecMt As Long
Dim lgMinute As Long
 
Dim strSecondeS As String
Dim lgSecSt As Long
Dim lgSeconde As Long
 
Dim lgTotal As Long
Dim strTotal As String
Dim MyRange As Range
 
' Macro2 Macro
' Macro enregistrée le 2006-03-20 par Patrice Gamache
 
    ActiveCell.Select
    strHeure = Format(ActiveCell.Value, "hh:mm:ss")
 
'Sert à valider que la cellule n'est pas déja en secondes
    If ActiveCell.Value >= 5 Then    'le "5" est un peu choisi au hazard mais il fonctionne...
        MsgBox "veuillez choisir une cellule au format : HH:MM:SS"
        Selection.NumberFormat = "0"
        End
    End If
 
' Heure
    strHeureS = Left(strHeure, 2)
    lgHeure = Int(strHeureS)
    lgSecHt = lgHeure * 3600
 
' Minutes
    strMinuteS = Mid(strHeure, 4, 2)
    lgMinute = Int(strMinuteS)
    lgSecMt = lgMinute * 60
 
' Secondes
    strSecondeS = Right(strHeure, 2)
    lgSeconde = Int(strSecondeS)
    lgSecSt = lgSeconde
 
'Calcul    
    lgTotal = lgSecHt + lgSecMt + lgSecSt
    Selection.NumberFormat = "0"
    strTotal = lgTotal
    ActiveCell.Value = lgTotal
 
End Sub
PS. S'il existe deja un topic sur ce probleme, soyez sympa de me donner le lien moi je l'ai pas trouvé...

[Balises de code rajoutées par ThierryAIM, Merci d'y penser la prochaine fois]