Calcul cumul d'heures à partir d'un formulaire

am0niak

XLDnaute Nouveau
Bonjour à tous,
J'ai créé une feuille excel dans laquelle je rentre ligne par ligne une date dans la colonne A puis un temps dans la colonne D. J'aimerai à partir de mon formulaire, sélectionner toutes les lignes entre deux dates demandées puis additionner les heures correspondantes à toutes les dates et les afficher dans une box.
J'ai déjà créé un formulaire, avec une "date de début" et une "date de fin" et les listes déroulantes leur correspondant.
Malheureusement je n'ai pas encore assez de connaissances afin de continuer seul, j'aimerai bénéficier de vos conseils.
Merci
Cordialement
Am0niak
 

Pièces jointes

  • Base de données 2012.xls
    90 KB · Affichages: 90
  • Base de données 2012.xls
    90 KB · Affichages: 84
  • Base de données 2012.xls
    90 KB · Affichages: 90

job75

XLDnaute Barbatruc
Re : Calcul cumul d'heures à partir d'un formulaire

Bonjour am0niak,

Les dates avec des points ce n'est pas génial mais bon...

Alors dans le code de l'UserForm la macro du bouton "Confirmer" :

Code:
Private Sub CommandButton1_Click() 'bouton Confirmer
Dim dat1 As Variant, dat2 As Variant
Dim i As Long, dat As Variant, n As Long
dat1 = Replace(ComboBox1, ".", "/")
dat2 = Replace(ComboBox2, ".", "/")
If Not IsDate(dat1) Then MsgBox "Choisissez une date": ComboBox1.DropDown: Exit Sub
If Not IsDate(dat2) Then MsgBox "Choisissez une date": ComboBox2.DropDown: Exit Sub
dat1 = CDate(dat1): dat2 = CDate(dat2)
For i = 4 To [A65536].End(xlUp).Row
  dat = Replace(Cells(i, 1), ".", "/")
  If IsDate(dat) Then
    dat = CDate(dat)
    If dat >= dat1 And dat <= dat2 Or dat >= dat2 And dat <= dat1 _
      Then n = n + Val(Cells(i, 4))
  End If
Next
MsgBox n 'si l'on veut afficher comme ça...
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Calcul cumul d'heures à partir d'un formulaire

Re,

Je viens de voir qu'il y a des nombres décimaux en D20 D26 D33 (avec un point en D26...).

Pour les récupérer correctement il faut légèrement modifier la macro :

Code:
Private Sub CommandButton1_Click() 'bouton Confirmer
Dim dat1 As Variant, dat2 As Variant
Dim i As Long, dat As Variant, v As Double
dat1 = Replace(ComboBox1, ".", "/")
dat2 = Replace(ComboBox2, ".", "/")
If Not IsDate(dat1) Then MsgBox "Choisissez une date": ComboBox1.DropDown: Exit Sub
If Not IsDate(dat2) Then MsgBox "Choisissez une date": ComboBox2.DropDown: Exit Sub
dat1 = CDate(dat1): dat2 = CDate(dat2)
For i = 4 To [A65536].End(xlUp).Row
  dat = Replace(Cells(i, 1), ".", "/")
  If IsDate(dat) Then
    dat = CDate(dat)
    If dat >= dat1 And dat <= dat2 Or dat >= dat2 And dat <= dat1 _
      Then v = v + Val(Replace(Cells(i, 4), ",", ".")) 'pour les nombres décimaux
  End If
Next
MsgBox v 'si l'on veut afficher comme ça...
End Sub
A+
 

Discussions similaires