XL 2016 Somme cellules sélectionnées VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !
 
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")
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
16
Affichages
1 K
Réponses
6
Affichages
436
Retour