Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

boucle calcul d'heure en vba suivant condition

GHISLAIN

XLDnaute Impliqué
Bonjour le forum

Je recherche en vba a effectuer le comptage d'heure correspondant a une condition

somme si Garde du nombre total sur les 2 plages

donc 12h pour toto1 + 12h pour toto2 + 12h toto13 pour un total de 36h


résultat a afficher dans le textbox



idem pour les autres appellations

ci joint un fichier qui je le souhaite sera plus explicite

Amicalement

ghislain
 

Pièces jointes

  • soldes heures 2.xlsm
    26.8 KB · Affichages: 56

Caillou

XLDnaute Impliqué
Re : boucle calcul d'heure en vba suivant condition

bonjour,

J'ai rien compris, mais essayes ça :
Code:
Private Sub CommandButton1_Click()
  Dim res As Single
  res = Application.WorksheetFunction.SumIf(Range("c12:c50"), "Garde", Range("f12:f50"))
  With Range("a1")
    .Value = res
    .NumberFormat = "[hh]:mm"
  End With
  TextBox1 = Range("A1").Text
End Sub
Caillou
 

Lone-wolf

XLDnaute Barbatruc
Re : boucle calcul d'heure en vba suivant condition

Bonjouj GHISLAI, Caillou

@Caillou, moi aussi j'ai fait comme toi, mais les textbox n'acceptent pas le format [hh]:mm. Il faut le contourner et appliquer cet exemple de Maître job75, comme tant d'autres d'ailleurs.

Petit plus: mettre la couleur Garde à la cellule G2.

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage, cel As Range
Application.EnableEvents = False
Set plage = Range("c12:c31")
For Each cel In plage
If cel.Offset(0, 0).Value = Range("g2") Then
cel.Offset(0, 0).Font.Color = Range("g2").Font.Color
cel.Offset(0, 1).Interior.Color = vbYellow
cel.Offset(0, 2).Interior.Color = vbYellow
UserForm1.Show
Else
cel.Offset(0, 0).Font.Color = xlDefaut
cel.Offset(0, 1).Interior.Color = xlNone
cel.Offset(0, 2).Interior.Color = xlNone
End If
Next cel
Application.EnableEvents = True
End Sub


Option Explicit
Dim x As Date
Private Sub CommandButton1_Click()

With Sheets("Liste")
x = Application.SumIf(.Range("c12:c31"), .Range("g2"), .Range("f12:f31"))
TextBox1 = Int(CDec(24 * x)) & ":" & Format(Minute(x), "00")
End With
End Sub




A+
 
Dernière édition:

Discussions similaires

Réponses
14
Affichages
872
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…