For next avec des heures

Bonjour,

Je suis actuellement sur un fichier qui doit gerer les horaires d'une equipe.

Je suis bloqué sur une macro qui doit detecter le nombre de personnel présent à un moment donné de la journée et l'afficher dans un userform.

Mon gros problème vient de la gestion (qd meme un peu hasardeuse) des heures par excel.

En gros j'essaye de faire un

for 5:00 (5h du mat) to 28:00 (le lendemain à 4:00) step 1:00 (1h)

Le code que j'ai fonctionne mais parfois (généralement qd le for next arrive à 17.00), il ne compte plus les personnes qui prennent leur service à heure pile (dans ce cas à 17.00).

Je ne peux malheureusement envoyer de fichier, la politique internet de ma boite m'interdit tout upload.

labelle = 1 'nom du label dans l'userform
quar = 0.25/24 ' quart d'heure
For heure = 5 / 24 To 28 / 24 Step 1 / 24

nbstaff = 0 ' personnel travaillant à heure pile
nbstaff2 = 0 ' personnel travaillant à heure + 15 min
nbstaff3 = 0 ' personnel travaillant à heure + 30 min
nbstaff4 = 0 ' personnel travaillant à heure + 45 min

      For staff = 37 To 461 Step 10 ' la ligne d'horaire de chaque personne

              If ActiveSheet.Cells(staff, 6) <> "" And ActiveSheet.Cells(staff, 7) <> "" Then '(staff,6) est l'horaire de prise de service et  (staff,7) l'horaire de fin

                   If heure >= ActiveSheet.Cells(staff, 6) And heure +quar <= ActiveSheet.Cells(staff, 7) Then
                       nbstaff = nbstaff + 1
                  End If

                  If heure + quar >= ActiveSheet.Cells(staff, 6) And heure + quar *2<= ActiveSheet.Cells(staff, 7) Then
                       nbstaff2 = nbstaff2 + 1
                  End If

                  If heure + quar * 2 >= ActiveSheet.Cells(staff, 6) And heure + quar * 3 <= ActiveSheet.Cells(staff, 7) Then
                      nbstaff3 = nbstaff3 + 1
                 End If

                 If heure + quar * 3 >= ActiveSheet.Cells(staff, 6) And heure + quar * 4 <= ActiveSheet.Cells(staff, 7) Then
                    nbstaff4 = nbstaff4 + 1
                End If

         End If
    next

UserForm11.Controls("Label" & labelle) = Format(heure, "hh:mm") & vbTab & nbstaff & vbLf & Format(heure + quar, "hh:mm") & vbTab & nbstaff2 & vbLf & Format(heure + quar * 2, "hh:mm") & vbTab & nbstaff3 & vbLf & Format(heure + quar * 3, "hh:mm") & vbTab & nbstaff4

labelle = labelle + 1
next

Merci pour toute aide.

Sebou

Bonjour,

Le code que j'ai fonctionne mais parfois (généralement qd le for next arrive à 17.00), il ne compte plus les personnes qui prennent leur service à heure pile (dans ce cas à 17.00).

Sans fichier ça ne va pas être simple mais il y a souvent des problèmes d'arrondis avec les heures.

Essaie en arrondissant des 2 cotés à 10 chiffres après la virgule.

eric

Effectivement en utilisant round(valeur,10) sur toutes les valeurs que la macro compare les calculs sont corrects.... C'etait si simple ><

Merci pour la réponse rapide et pour m'avoir empeché de commettre l'irreparable ^^

Rechercher des sujets similaires à "next heures"