Calcul cumul d'heures à partir d'un formulaire

  • Initiateur de la discussion Initiateur de la discussion am0niak
  • Date de début Date de début

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 !

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

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+
 
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+
 
- 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

Réponses
8
Affichages
793
Réponses
8
Affichages
690
Retour