XL 2016 Somme cellules sélectionnées VBA

BlackShift

XLDnaute Nouveau
Bonjour,

J'aimerais ajouter une fonction à la barre d'état d'excel pour afficher un total en heure minutes, à partir d'une plage de donnée en minute le tout sur une plage sélectionner. Simplement : il s'agit de la même fonction somme présente par défaut dans la barre d'état d'excel, qui me retourne donc actuellement une somme de minutes sur la plage sélectionnée, à laquelle il faut ajouter une fonction de conversion en heure minute. J'ai commencé par essayé de faire la somme de la plage sélectionnée :

Private Sub WorkSheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

X = Application.WorksheetFunction.Sum(Selection)

Application.StatusBar = "Somme = " & X

End Sub


Le problème est que j'utilise des filtres, et il faut que je limite la somme aux cellules visibles. J'ai essayé :


Private Sub WorkSheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

X = Application.WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible))

Application.StatusBar = "Somme = " & X

End Sub
Mais cela ne marche pas...

En ce qui concerne la conversion en heure minute, je pense pouvoir utiliser la fonction TimeSerial(0, X, 0).

Merci pour votre aide !
 

Iznogood1

XLDnaute Impliqué
Bonjour,

Code:
Option Explicit

Sub test()
  Dim r As Range
  Dim result As Double
  Dim heures As Integer
  Dim minutes As Integer

  On Error Resume Next

  For Each r In Selection
  If Not r.EntireRow.Hidden And Not r.EntireColumn.Hidden Then result = result + r.Value
  Next r

  On Error GoTo 0

  heures = CInt(result) * 24
  minutes = result - heures
  MsgBox heures & ":" & Format(minutes, "mm:ss")
End Sub

Il semblerait qu'on ne puisse pas utiliser Format(result, "[h]:mm:ss")
 

BlackShift

XLDnaute Nouveau
Merci de ton aide, voilà ce qui a marché comme je le voulais:

Private Sub WorkSheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

Dim r As Range
Dim result As Double
Dim heures As Integer
Dim minutes As Integer

On Error Resume Next

For Each r In Selection
If Not r.EntireRow.Hidden And Not r.EntireColumn.Hidden Then result = result + r.Value
Next r

On Error GoTo 0
heures = Int(result / 60)
minutes = result - heures * 60

Application.StatusBar = "Temps: " & heures & ":" & minutes

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 144
Messages
2 106 358
Membres
109 563
dernier inscrit
sylla121